{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Tce3stUlHN0L"
      },
      "source": [
        "##### Copyright 2025 Google LLC."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "tuOe1ymfHZPu"
      },
      "outputs": [],
      "source": [
        "# @title Licensed under the Apache License, Version 2.0 (the \"License\");\n",
        "# you may not use this file except in compliance with the License.\n",
        "# You may obtain a copy of the License at\n",
        "#\n",
        "# https://www.apache.org/licenses/LICENSE-2.0\n",
        "#\n",
        "# Unless required by applicable law or agreed to in writing, software\n",
        "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
        "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
        "# See the License for the specific language governing permissions and\n",
        "# limitations under the License."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BuhjNPTpju5n"
      },
      "source": [
        "# Gemini API: Getting started with Gemini embedding models\n",
        "\n",
        "<a target=\"_blank\" href=\"https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Embeddings.ipynb\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" height=30/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ddZb9-z46mM5"
      },
      "source": [
        "Embeddings are numerical representations that capture the relationships between different inputs. Text embeddings achieve this by converting text into arrays of floating-point numbers known as vectors. The primary purpose of these vectors is to encapsulate the semantic meaning of the text. The dimensionality of the vector, which is the length of the embedding array, can be quite large, with a passage of text sometimes being represented by a vector with hundreds of dimensions.\n",
        "\n",
        "The Gemini API generates state-of-the-art text embeddings. An embedding is a list of floating point numbers that represent the meaning of a word, sentence, or paragraph. You can use embeddings in many downstream applications like document search.\n",
        "\n",
        "This notebook provides quick code examples that show you how to get started generating embeddings."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ckLd8Ou9Py8J"
      },
      "source": [
        "## Table of Contents\n",
        "\n",
        "1.  **Setup:** Install the SDK and set up your API key.\n",
        "2.  **Embed content:** Generate text embeddings for single or multiple inputs.\n",
        "3.  **Truncating embeddings:** Explore how to reduce the dimensionality of embeddings.\n",
        "4.  **Embeddings in practice - Sentences similarity analysis:** Use embeddings to analyze the similarity between sentences using cosine similarity and visualize the results with a heatmap.\n",
        "5.  **Using `task_type` for different scenarios:** Learn how to use `task_type` for various applications like Retrieval Augmented Generation (RAG), including an example of building a simple FAQ system."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "H05wT2GkRb3v"
      },
      "source": [
        "## Setup"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gZzJh3knRe0X"
      },
      "source": [
        "### Install SDK\n",
        "\n",
        "Install the SDK from [PyPI](https://github.com/googleapis/python-genai)."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "YD6urJjWGVDf"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m41.6/41.6 kB\u001b[0m \u001b[31m2.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m226.8/226.8 kB\u001b[0m \u001b[31m7.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h"
          ]
        }
      ],
      "source": [
        "%pip install -q -U \"google-genai>=1.0.0\""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "DJriBaWmkL6Z"
      },
      "source": [
        "### Setup your API key\n",
        "\n",
        "To run the following cell, your API key must be stored it in a Colab Secret named `GOOGLE_API_KEY`. If you don't already have an API key or you aren't sure how to create a Colab Secret, see [Authentication ![image](https://storage.googleapis.com/generativeai-downloads/images/colab_icon16.png)](../quickstarts/Authentication.ipynb) for an example."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "Zey3UiYGDDzU"
      },
      "outputs": [],
      "source": [
        "from google.colab import userdata\n",
        "\n",
        "GEMINI_API_KEY = userdata.get('GEMINI_API_KEY')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "amMID20-Rq1G"
      },
      "source": [
        "### Initialize SDK client\n",
        "\n",
        "With the new SDK, now you only need to initialize a client with you API key (or OAuth if using [Vertex AI](https://cloud.google.com/vertex-ai)). The model is now set in each call."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "Do3kAVjCRtc6"
      },
      "outputs": [],
      "source": [
        "from google import genai\n",
        "\n",
        "client = genai.Client(api_key=GEMINI_API_KEY)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "mrjaYGUpRSb3"
      },
      "source": [
        "### Choose a model\n",
        "\n",
        "Select the model you want to use in this guide. You can either select one from the list or enter a model name manually.\n",
        "\n",
        "For a full overview of all Gemini models, check the [documentation](https://ai.google.dev/gemini-api/docs/models/gemini)."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "Kfb47RCGR5T-"
      },
      "outputs": [],
      "source": [
        "MODEL_ID = \"gemini-embedding-001\" # @param [\"gemini-embedding-001\", \"text-embedding-004\"] {\"allow-input\":true, isTemplate: true}"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gGpQ8Eg0kNXW"
      },
      "source": [
        "## Embed content\n",
        "\n",
        "Call the `embed_content` method with the model to generate text embeddings."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "J76TNa3QDwCc"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "[-0.02342152, 0.01676572, 0.009261323, -0.06383, - ... TRIMMED]\n"
          ]
        }
      ],
      "source": [
        "text = [\"Hello world\"]\n",
        "result = client.models.embed_content(model=MODEL_ID, contents=text)\n",
        "[embedding] = result.embeddings\n",
        "\n",
        "# Print just a part of the embedding to keep the output manageable\n",
        "print(str(embedding.values)[:50], '... TRIMMED]')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "rU6XX33547Ll"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "3072\n"
          ]
        }
      ],
      "source": [
        "print(len(embedding.values))  # The embeddings have 3072 dimensions by default"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BUKqxF9yQuZl"
      },
      "source": [
        "## Batch embed content\n",
        "\n",
        "You can embed a list of multiple prompts with one API call for efficiency."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "Hzz-7Heuf4tV"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "values=[-0.022374554, -0.004560777, 0.013309286, - ... TRIMMED]\n",
            "values=[-0.007975887, -0.02141119, -0.0016711014,  ... TRIMMED]\n",
            "values=[-0.0047850125, 0.008764064, 0.0062852204,  ... TRIMMED]\n"
          ]
        }
      ],
      "source": [
        "result = client.models.embed_content(\n",
        "    model=MODEL_ID,\n",
        "    contents=[\n",
        "      'What is the meaning of life?',\n",
        "      'How much wood would a woodchuck chuck?',\n",
        "      'How does the brain work?'])\n",
        "\n",
        "for embedding in result.embeddings:\n",
        "    # Print just a part of the embedding to keep the output manageable\n",
        "  print(str(embedding)[:50], '... TRIMMED]')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "r0r0dt958QQg"
      },
      "source": [
        "## Setting embeddings dimensionality\n",
        "\n",
        "The embedding models also supports lower embedding dimensions. Specify `output_dimensionality` to truncate the output."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "bX_AjfMx8PvV"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "(3072, 10)"
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "text=[\"Hello world\"]\n",
        "# Not truncated\n",
        "result1 = client.models.embed_content(\n",
        "    model=MODEL_ID,\n",
        "    contents=text)\n",
        "\n",
        "\n",
        "# Truncated\n",
        "from google.genai import types\n",
        "\n",
        "result2 = client.models.embed_content(\n",
        "    model=MODEL_ID,\n",
        "    contents=text,\n",
        "    config=types.EmbedContentConfig(output_dimensionality=10))\n",
        "\n",
        "[embedding1] = result1.embeddings\n",
        "[embedding2] = result2.embeddings\n",
        "\n",
        "\n",
        "(len(embedding1.values), len(embedding2.values))"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7eSLTv0Q5Lrr"
      },
      "source": [
        "## Embeddings in practice - Sentences similarity analysis\n",
        "\n",
        "Sentence similarity analysis leverages embedding models to transform sentences into numerical vectors that encapsulate their semantic meaning. This allows for the comparison of sentences by measuring the distance or angle between their respective vectors in a high-dimensional space - This way, texts with similar meanings will have vectors that are closer together.\n",
        "\n",
        "For this example, you will use a Pandas dataframe to store sentences and calculate the similarity of an external sentence against them.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "L5NVK_VY5rzX"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>text</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>I really enjoyed last night's movie</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>we watched a lot of acrobatic scenes yesterday</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>I had fun writing my first program in Python</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>a tremendous feeling of relief to finally get ...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Oh Romeo, Romeo, wherefore art thou Romeo?</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                text\n",
              "0                I really enjoyed last night's movie\n",
              "1     we watched a lot of acrobatic scenes yesterday\n",
              "2       I had fun writing my first program in Python\n",
              "3  a tremendous feeling of relief to finally get ...\n",
              "4         Oh Romeo, Romeo, wherefore art thou Romeo?"
            ]
          },
          "execution_count": 8,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "import pandas as pd\n",
        "\n",
        "text = [\n",
        "    \"I really enjoyed last night's movie\",\n",
        "    \"we watched a lot of acrobatic scenes yesterday\",\n",
        "    \"I had fun writing my first program in Python\",\n",
        "    \"a tremendous feeling of relief to finally get my Nodejs scripts to run without errors!\",\n",
        "    \"Oh Romeo, Romeo, wherefore art thou Romeo?\"\n",
        "]\n",
        "\n",
        "df = pd.DataFrame(text, columns=[\"text\"])\n",
        "df"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Fd9oPYjF6RC7"
      },
      "source": [
        "Now you will create a new dataframe column called `embeddings` to generate the embeddings for each text using the embedding model."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "kTS5wO_n5rwD"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>text</th>\n",
              "      <th>embeddings</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>I really enjoyed last night's movie</td>\n",
              "      <td>[-0.008643071, -0.0053559155, -0.021297632, -0...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>we watched a lot of acrobatic scenes yesterday</td>\n",
              "      <td>[0.0020033775, 0.011857256, 0.014011001, -0.05...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>I had fun writing my first program in Python</td>\n",
              "      <td>[0.006098604, 0.01440329, 0.003543624, -0.0668...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>a tremendous feeling of relief to finally get ...</td>\n",
              "      <td>[0.002211906, -0.010089638, -0.010465407, -0.0...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Oh Romeo, Romeo, wherefore art thou Romeo?</td>\n",
              "      <td>[-0.023238435, 0.0008168684, -0.01867058, -0.0...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                text  \\\n",
              "0                I really enjoyed last night's movie   \n",
              "1     we watched a lot of acrobatic scenes yesterday   \n",
              "2       I had fun writing my first program in Python   \n",
              "3  a tremendous feeling of relief to finally get ...   \n",
              "4         Oh Romeo, Romeo, wherefore art thou Romeo?   \n",
              "\n",
              "                                          embeddings  \n",
              "0  [-0.008643071, -0.0053559155, -0.021297632, -0...  \n",
              "1  [0.0020033775, 0.011857256, 0.014011001, -0.05...  \n",
              "2  [0.006098604, 0.01440329, 0.003543624, -0.0668...  \n",
              "3  [0.002211906, -0.010089638, -0.010465407, -0.0...  \n",
              "4  [-0.023238435, 0.0008168684, -0.01867058, -0.0...  "
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "df[\"embeddings\"] = df.apply(lambda x: client.models.embed_content(model=MODEL_ID, contents=(x['text'])).embeddings[0].values, axis=1)\n",
        "df"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QtpYXdVXCqmg"
      },
      "source": [
        "### Analyzing the similarity of text examples with cosine similarity\n",
        "\n",
        "By converting text into embeddings, you can calculate similarity scores. There are many ways to calculate similarity scores, and a common technique is to use [cosine similarity](https://en.wikipedia.org/wiki/Cosine_similarity).\n",
        "\n",
        "In the example above, two of the sentences in the text column refer to enjoying a movie, and the other two relate to enjoying programming. The cosine similarity scores should be higher (close to 1.0) when making pairwise comparisons between semantically related sentences, and the scores should be lower between semantically different sentences.\n",
        "\n",
        "The DataFrame output below shows the resulting cosine similarity scores between the embeddings:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "g7P-TIGKDcLV"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>I really enjoyed last night's movie</th>\n",
              "      <th>we watched a lot of acrobatic scenes yesterday</th>\n",
              "      <th>I had fun writing my first program in Python</th>\n",
              "      <th>a tremendous feeling of relief to finally get my Nodejs scripts to run without errors!</th>\n",
              "      <th>Oh Romeo, Romeo, wherefore art thou Romeo?</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>I really enjoyed last night's movie</th>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.689709</td>\n",
              "      <td>0.649973</td>\n",
              "      <td>0.610519</td>\n",
              "      <td>0.504257</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>we watched a lot of acrobatic scenes yesterday</th>\n",
              "      <td>0.689709</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.572219</td>\n",
              "      <td>0.528064</td>\n",
              "      <td>0.529288</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>I had fun writing my first program in Python</th>\n",
              "      <td>0.649973</td>\n",
              "      <td>0.572219</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.642147</td>\n",
              "      <td>0.483042</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>a tremendous feeling of relief to finally get my Nodejs scripts to run without errors!</th>\n",
              "      <td>0.610519</td>\n",
              "      <td>0.528064</td>\n",
              "      <td>0.642147</td>\n",
              "      <td>1.000000</td>\n",
              "      <td>0.480117</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Oh Romeo, Romeo, wherefore art thou Romeo?</th>\n",
              "      <td>0.504257</td>\n",
              "      <td>0.529288</td>\n",
              "      <td>0.483042</td>\n",
              "      <td>0.480117</td>\n",
              "      <td>1.000000</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                                    I really enjoyed last night's movie  \\\n",
              "I really enjoyed last night's movie                                            1.000000   \n",
              "we watched a lot of acrobatic scenes yesterday                                 0.689709   \n",
              "I had fun writing my first program in Python                                   0.649973   \n",
              "a tremendous feeling of relief to finally get m...                             0.610519   \n",
              "Oh Romeo, Romeo, wherefore art thou Romeo?                                     0.504257   \n",
              "\n",
              "                                                    we watched a lot of acrobatic scenes yesterday  \\\n",
              "I really enjoyed last night's movie                                                       0.689709   \n",
              "we watched a lot of acrobatic scenes yesterday                                            1.000000   \n",
              "I had fun writing my first program in Python                                              0.572219   \n",
              "a tremendous feeling of relief to finally get m...                                        0.528064   \n",
              "Oh Romeo, Romeo, wherefore art thou Romeo?                                                0.529288   \n",
              "\n",
              "                                                    I had fun writing my first program in Python  \\\n",
              "I really enjoyed last night's movie                                                     0.649973   \n",
              "we watched a lot of acrobatic scenes yesterday                                          0.572219   \n",
              "I had fun writing my first program in Python                                            1.000000   \n",
              "a tremendous feeling of relief to finally get m...                                      0.642147   \n",
              "Oh Romeo, Romeo, wherefore art thou Romeo?                                              0.483042   \n",
              "\n",
              "                                                    a tremendous feeling of relief to finally get my Nodejs scripts to run without errors!  \\\n",
              "I really enjoyed last night's movie                                                          0.610519                                        \n",
              "we watched a lot of acrobatic scenes yesterday                                               0.528064                                        \n",
              "I had fun writing my first program in Python                                                 0.642147                                        \n",
              "a tremendous feeling of relief to finally get m...                                           1.000000                                        \n",
              "Oh Romeo, Romeo, wherefore art thou Romeo?                                                   0.480117                                        \n",
              "\n",
              "                                                    Oh Romeo, Romeo, wherefore art thou Romeo?  \n",
              "I really enjoyed last night's movie                                                   0.504257  \n",
              "we watched a lot of acrobatic scenes yesterday                                        0.529288  \n",
              "I had fun writing my first program in Python                                          0.483042  \n",
              "a tremendous feeling of relief to finally get m...                                    0.480117  \n",
              "Oh Romeo, Romeo, wherefore art thou Romeo?                                            1.000000  "
            ]
          },
          "execution_count": 10,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from sklearn.metrics.pairwise import cosine_similarity\n",
        "\n",
        "cos_sim_array = cosine_similarity(list(df.embeddings.values))\n",
        "\n",
        "# display as DataFrame\n",
        "similarities = pd.DataFrame(cos_sim_array, index=text, columns=text)\n",
        "similarities"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0nKojP0yD3B0"
      },
      "source": [
        "To make this easier to understand, you can use a heatmap. Naturally, the text is most similar when they are identical (score of `1.0`). The next highest scores are when the sentences are semantically similar. The lowest scores are when the sentences are quite different in meaning."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "GGRwVXUkD6Ey"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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2a9du3YP/H2w2Wxyc3NTYGCgunTponLlyhmosxa73a5JkyZp/PjxunDhgiSpWLFievPNNxUWFsafF/wtDKcAAAAAB1G2bFl98MEHatWqlfz9/bVw4UI1atRI0dHRaty4sa5evWo68bHWvn37DN9v2LBB+fPnV8WKFeXi4pLh2dKlS7MzzfJ69uypb7/9Vt7e3qpevbokKTIyUgkJCWratKmio6P1888/a/369elvkMOjd/PmTUmSp6enJOn8+fMqXry4ySTkUBzrAwAAABzEG2+8oa5duypv3rwqUaKEGjRoIOn+cb/g4GCzcRbg5eWV4ft27doZKsHvFSlSRF26dNHUqVPl5OQkSUpLS9PAgQPl6emphQsXql+/fnrrrbe0detWw7XW8etQ6tKlSxo9erRmzpyZfmE98N9g5xQAAADgQPbu3auzZ8/q2WefTb/sedWqVfL29mZHCCyrUKFC2rZtm8qWLZth/fjx46pdu7auXr2qgwcPqm7dukpISDAT+Zi7fv26XnvtNf34449ydXXV0KFD1b9/f40YMUIff/yxKleurEGDBqlTp06mU5EDOZkOAAAAAPB/atSooVatWun8+fNKSUmRJLVq1YrBVDZr1KjRA4ccN27cUKNGjbI/yOJSUlJ09OjRTOtHjx5VamqqJMnNzY37jh6hoUOHavv27erZs6cKFCigQYMG6bnnnlNkZKQ2bNignTt3MpjC38ZwCgAAAHAQycnJ6t27tzw8PFSxYsX0V7IPGDBAY8eONVxnLZs2bdLdu3czrd++fVtbtmwxUGRtL774onr37q2JEydq69at2rp1qyZOnKjevXure/fukqSIiAhVrFjRcOnj64cfftCsWbP08ccfa+XKlbLb7apataq+++47Pf3006bzkMNx5xQAAADgIN5++21FR0dr06ZNat68efp6kyZNNGLECA0dOtRgnTUcOHAg/evDhw/r0qVL6d+npqZq9erVXPhswMSJE1W4cGF99NFHunz5siSpcOHCGjRokN566y1JUtOmTTP8uUHWunDhgoKCgiRJpUqVkpubm7p162a4Co8L7pwCAAAAHETJkiW1aNEiPf300/L09FR0dLQCAgJ08uRJVatWTTdu3DCd+NhzcnJKPxr2oB+V3N3d9cknn6hXr17ZnYb/9eufg3z58hkusRZnZ2ddunRJhQoVknT/MvQD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SxeVKVNG165dU4sWLSRJUVFRCgwMNFwHmBMVFaWWLVsqOTlZSUlJyp8/v65evSoPDw/5+voynMpGH330kVq1aqV169apVq1akqQdO3bo7Nmz+v777w3XIafizikAAADAQdy7d0+TJ0/W2bNn1bNnT4WEhEiSJk6cKE9PT/Xp08dwobWcOHFCGzduVFxcnNLS0jI8GzZsmKEqa2rQoIHKli2radOmycvLS9HR0XJxcVG3bt00cOBAtW/f3nSipVy4cEH/+c9/dPToUUlSUFCQXnvtNRUrVsxwGXIqhlMAAAAA8DvTp0/Xq6++qoIFC6pIkSKy2Wzpz2w2myIjIw3WWY+3t7d27dqlcuXKydvbWzt27FBQUJB27dqlHj16pA9JAORMHOsDAAAAHMi8efP02WefKSYmRjt27FDJkiU1adIk+fv7q02bNqbzLOODDz7Q6NGj9dZbb5lOgSQXFxc5OTlJknx9fRUbG6ugoCB5eXnp7NmzhuusJyEhQbt3737grsLu3bsbqkJOxnAKAAAAcBCffvqphg0bpjfeeEOjR49OvwTd29tbkyZNYjiVja5fv67nn3/edAb+V0hIiPbs2aMyZcqofv36GjZsmK5evap58+apUqVKpvMsZeXKleratasSExOVL1++TLsKGU7h73AyHQAAAADgvk8++UTTp0/XO++8I2dn5/T1GjVq6ODBgwbLrOf555/X2rVrTWfgf3344YcqWrSoJGn06NHy8fHRq6++qitXrujzzz83XGctgwcPVq9evZSYmKiEhARdv349/Vd8fLzpPORQ7JwCAAAAHMTp06fTL0H/rdy5cyspKclAkXUFBgbqvffe086dOxUcHCwXF5cMz3k7XPaqUaNG+te+vr5avXq1wRprO3/+vMLCwuTh4WE6BY8RhlMAAACAg/D399f+/ftVsmTJDOurV69WUFCQoSpr+vzzz5U3b15FREQoIiIiwzObzcZwCpbVrFkz7d27VwEBAaZT8BhhOAUAAAA4iPDwcL3++uu6ffu27Ha7du/era+++kpjxozRjBkzTOdZyunTp00n4DcuX76sIUOGaP369YqLi9PvXzr/6/1seDRWrFiR/nWrVq305ptv6vDhww/cVRgaGprdeXgM2Oy//1MNAAAAwJj58+drxIgROnXqlCSpWLFiGjlypHr37m24DDCnRYsWio2NVf/+/VW0aNEMl3BL4mUBj9ivb0r8/7HZbAwK8bcwnAIAAAAcUHJyshITE+Xr62s6xTLCw8P1/vvvK0+ePAoPD//Tz06YMCGbqiBJnp6e2rJli6pWrWo6BcAjwLE+AAAAwAF5eHhw4XA2i4qK0r1799K//iO/37WDR8/Pzy/TUT6YMXfuXHXq1Em5c+fOsH737l0tXLhQ3bt3N1SGnIydUwAAAICD4F4d4MHWrl2r8ePH67PPPlOpUqVM51ias7OzLl68mGlX57Vr1+Tr68vfU/hb2DkFAAAAOIiePXsqNjZW77333gPv1QGsqlOnTkpOTlbp0qXl4eGR6RLu+Ph4Q2XWY7fbH/h307lz5+Tl5WWgCI8DhlMAAACAg9i6dSv36gAPMGnSJNMJlhcSEiKbzSabzabGjRsrV67/Gyekpqbq9OnTat68ucFC5GQMpwAAAAAHwb06wIP16NHDdILltW3bVpK0f/9+NWvWTHnz5k1/5urqqlKlSqlDhw6G6pDTcecUAAAA4CC4Vwf4Pzdu3FC+fPnSv/4zv34Oj96cOXPUqVMnubm5mU7BY4ThFAAAAOAgfHx8lJycrJSUFO7VgeX99uJtJyenB95z9Ov9R1zCDeRsHOsDAAAAHAT36jiWCxcuaOvWrYqLi1NaWlqGZ2FhYYaqrGPDhg3Knz+/JGnjxo2GawA8SuycAgAAgE6dOqVZs2bp1KlTmjx5snx9ffXDDz+oRIkSqlixouk8INvNnj1br7zyilxdXVWgQIEMu3ZsNptiYmIM1llD+/btNXv2bOXLl09z585Vp06dlDt3btNZAB4BhlMAAAAWFxERoRYtWqhOnTravHmzjhw5ooCAAI0dO1Z79+7V4sWLTSdaCoNCx+Dn56d+/frp7bfflpOTk+kcS3J1ddWZM2dUtGjRDEf8ADx++FsWAADA4oYOHaoPPvhAP/74o1xdXdPXGzVqpJ07dxoss56IiAgFBwdr165dWrp0qRITEyVJ0dHRGj58uOE6a0lOTlbnzp0ZTBlUvnx5vf3225ozZ47sdru+/vprzZ0794G/kH1GjRql5OTkTOu3bt3SqFGjDBThccDOKQAAAIvLmzevDh48KH9/f3l6eio6OloBAQH6+eefVb58ed2+fdt0omXUqlVLzz//vMLDwzP8XuzevVvt27fXuXPnTCdaxj//+U/lz59fQ4cONZ1iWdu3b1d4eLhOnTql+Ph4eXp6PvBSdJvNxssCstEf7WK7du2afH19uZwefwsXogMAAFict7e3Ll68KH9//wzrUVFRKl68uKEqazp48KAWLFiQad3X11dXr141UGRdY8aM0XPPPafVq1crODg405sTJ0yYYKjMOmrXrp2+e9PJyUnHjx/nWJ8D+PUNib8XHR2dfoE98N9iOAUAAGBxnTt31ltvvaVvvvlGNptNaWlp2rZtm4YMGaLu3bubzrMUBoWOY8yYMVqzZo3KlSsnSZkuREf2On36tAoVKmQ6w9J8fHxks9lks9lUtmzZDH8OUlNTlZiYqH79+hksRE7GsT4AAACLu3v3rl5//XXNnj1bqampypUrl1JTU9WlSxfNnj1bzs7OphMtY8iQIdq1a5e++eYblS1bVpGRkbp8+bK6d++u7t27c+9UNvLx8dHEiRPVs2dP0ymAQ/j17q9evXpp0qRJ8vLySn/m6uqqUqVKqVatWgYLkZMxnAIAAIAkKTY2VocOHVJiYqJCQkJUpkwZ00mWw6DQcRQpUkRbtmzhzwHwGykpKZo/f74aNWokPz8/0zl4jDCcAgAAABzM2bNndfDgQQaFBo0ZM0YXL17UlClTTKcADsXDw0NHjhxRyZIlTafgMcKdUwAAABYUHh6u999/X3ny5FF4ePiffpaLn7Ofn58fuxIM2717tzZs2KDvvvtOFStWzHQh+tKlSw2VAWY99dRTioqKYjiFLMVwCgAAwIKioqJ079699K//CBc/Z68OHTroqaee0ltvvZVh/aOPPtKePXv0zTffGCqzHm9vb7Vv3950Bn7nypUrOnbsmCSpXLlyXJJuwGuvvabBgwfr3Llzql69uvLkyZPheeXKlQ2VISfjWB8AAADgIAoVKqQNGzYoODg4w/rBgwfVpEkTXb582VAZYFZSUpIGDBigefPmKTU1VZLk7Oys7t2765NPPpGHh4fhQutwcnLKtGaz2WS322Wz2dJ/f4D/RuZ/qgAAAGApX375pZKTk01nQFJiYqJcXV0zrbu4uOjGjRsGigDHEB4eroiICK1YsUIJCQlKSEjQ8uXLFRERocGDB5vOs5TTp09n+hUTE5P+v8Dfwc4pAAAAiytUqJBu3bql0NBQdevWTc2aNeOtcIY89dRTeu655zRs2LAM6yNGjNDKlSu1b98+Q2XWtHjxYn399deKjY3V3bt3MzyLjIw0VGVNBQsW1OLFi9WgQYMM6xs3blTHjh115coVM2EAsgR3TgEAAFjcxYsXtXr1an311Vfq2LGjPDw89Pzzz6tr166qXbu26TxLee+999S+fXudOnVKjRo1kiStX79eX331FfdNZbMpU6bonXfeUc+ePbV8+XK99NJLOnXqlPbs2aPXX3/ddJ7lJCcnq3DhwpnWfX192flpyOHDhx84uA0NDTVUhJyMnVMAAABIl5ycrGXLlmnBggVat26dnnjiCZ06dcp0lqWsWrVKH374ofbv3y93d3dVrlxZw4cPV/369U2nWUr58uU1fPhwvfDCC/L09FR0dLQCAgI0bNgwxcfHa+rUqaYTLaVx48YqUKCA5s6dKzc3N0nSrVu31KNHD8XHx2vdunWGC60jJiZG7dq108GDB9PvmpL+7wUa3DmFv4PhFAAAADK4evWqFi5cqGnTpunIkSP8oAFL8vDw0JEjR1SyZEn5+vrqxx9/VJUqVXTixAk9/fTTunbtmulESzl48KCaN2+uO3fuqEqVKpKk6Ohoubm5ac2aNapYsaLhQuto3bq1nJ2dNWPGDPn7+2v37t26du2aBg8erI8//lh169Y1nYgciAvRAQAAoOTkZM2fP18tW7ZU8eLFNWnSJLVr104//fST6TRLOXv2rM6dO5f+/e7du/XGG2/o888/N1hlTUWKFFF8fLwkqUSJEtq5c6ek+5dB89/3s19wcLBOnDihMWPGqGrVqqpatarGjh2rEydOMJjKZjt27NCoUaNUsGBBOTk5ycnJSc8884zGjBmjsLAw03nIobhzCgAAwOI6d+6s7777Th4eHurYsaPee+891apVy3SWJXXp0kUvv/yyXnzxRV26dElNmjRRpUqVNH/+fF26dCnTRel4dBo1aqQVK1YoJCREL730kgYNGqTFixdr7969at++vek8y9m8ebNq166tvn37ZlhPSUnR5s2bVa9ePUNl1pOamipPT09J9y+qv3DhgsqVK6eSJUvq2LFjhuuQUzGcAgAAsDhnZ2d9/fXXvKXPARw6dEhPPfWUJOnrr79WcHCwtm3bprVr16pfv34Mp7LR559/rrS0NEnS66+/rgIFCmj79u0KDQ3VK6+8YrjOeho2bKiLFy/K19c3w/ovv/yihg0bcvw4G1WqVEnR0dHy9/dXzZo19dFHH8nV1VWff/65AgICTOchh2I4BQAAYHHz5883nYD/de/ePeXOnVuStG7duvS3XpUvX14XL140mWYpKSkp+vDDD9WrVy898cQTku7vMOzcubPhMuuy2+3pF27/1rVr15QnTx4DRdb17rvvKikpSZI0atQoPffcc6pbt64KFCigRYsWGa5DTsWF6AAAAFBERIQ+/vhjHTlyRJJUoUIFvfnmm1xsm81q1qyphg0bqlWrVmratKl27typKlWqaOfOnfrHP/6R4T4qPFp58+bVoUOHVKpUKdMplvbrEcrly5erefPm6cNb6f7xsgMHDqhcuXJavXq1qURIio+Pl4+PzwMHiMBfwYXoAAAAFvfll1+qSZMm8vDwUFhYmMLCwuTu7q7GjRtrwYIFpvMsZdy4cfrss8/UoEEDvfDCC+lvJVuxYkX6cT9kj8aNGysiIsJ0huV5eXnJy8tLdrtdnp6e6d97eXmpSJEievnll/Xll1+azrS8/PnzM5jCQ2HnFAAAgMUFBQXp5Zdf1qBBgzKsT5gwQdOnT0/fTYXskZqaqhs3bsjHxyd97eeff5aHh0em+3bw6EybNk0jR45U165dVb169UxHx349consMXLkSA0ZMoQjfMBjiuEUAACAxeXOnVs//fSTAgMDM6yfPHlSlSpV0u3btw2VAeY4Of3xIRObzcYF3ACQhTjWBwAAYHF+fn5av359pvV169bJz8/PQBFgXlpa2h/+YjAFAFmLt/UBAABY3ODBgxUWFqb9+/erdu3akqRt27Zp9uzZmjx5suE6AADwuONYHwAAALRs2TKNHz8+/X6poKAgvfnmm2rTpo3hMsCMKVOmPHDdZrPJzc1NgYGBqlevnpydnbO5DDBv3rx5mjZtmk6fPq0dO3aoZMmSmjRpkvz9/fn/DfwtDKcAAAAA4Hf8/f115coVJScnp19Of/36dXl4eChv3ryKi4tTQECANm7cyPHXRyR//vw6fvy4ChYsqF69emny5Mny9PQ0nWV5n376qYYNG6Y33nhDo0eP1qFDhxQQEKDZs2drzpw52rhxo+lE5EDcOQUAAIB0iYmJunHjRoZfyD5hYWEP3LEzdepUvfHGG9kfZGEffvihnnzySZ04cULXrl3TtWvXdPz4cdWsWVOTJ09WbGysihQpkuktl8g6d+/eTf87aM6cObycwUF88sknmj59ut55550MOwdr1KihgwcPGixDTsbOKQAAAIs7ffq0+vfvr02bNmX44c9ut/NWsmxWvHhxrVixQtWrV8+wHhkZqdDQUJ07d85QmfWULl1aS5YsUdWqVTOsR0VFqUOHDoqJidH27dvVoUMHXbx40UzkY+7ZZ5/V5cuXVb16dc2ZM0edOnWSu7v7Az/7xRdfZHOddbm7u+vo0aMqWbKkPD09FR0drYCAAJ04cUKVK1fWrVu3TCciB+JCdAAAAIvr1q2b7Ha7vvjiCxUuXFg2m810kmVdu3ZNXl5emdbz5cunq1evGiiyrosXLyolJSXTekpKii5duiRJKlasmG7evJndaZbx5ZdfauLEiTp16pRsNpt++eUXdk85AH9/f+3fv18lS5bMsL569WoFBQUZqkJOx3AKAADA4qKjo7Vv3z6VK1fOdIrlBQYGavXq1erfv3+G9R9++EEBAQGGqqypYcOGeuWVVzRjxgyFhIRIur9r6tVXX1WjRo0kSQcPHpS/v7/JzMda4cKFNXbsWEn3ByLz5s1TgQIFDFchPDxcr7/+um7fvi273a7du3frq6++0pgxYzRjxgzTecihGE4BAABY3JNPPqmzZ88ynHIA4eHh6t+/v65cuZI+AFm/fr3Gjx+vSZMmmY2zmJkzZ+rFF19U9erV5eLiIun+rqnGjRtr5syZkqS8efNq/PjxJjMt4/Tp0+lf3759W25ubgZrrK1Pnz5yd3fXu+++q+TkZHXp0kXFihXT5MmT1blzZ9N5yKG4cwoAAMDiTp06pX79+qlbt26qVKlS+g/iv6pcubKhMmv69NNPNXr0aF24cEGSVKpUKY0YMULdu3c3XGZNR48e1fHjxyVJ5cqVY4hrSFpamkaPHq1p06bp8uXLOn78uAICAvTee++pVKlS6t27t+lES0hJSdGCBQvUrFkzFS5cWMnJyUpMTJSvr6/pNORwDKcAAAAsbufOnerSpYt+/vnn9DWbzcaF6IZduXJF7u7uyps3r+kUy/v1RybuYzNn1KhRmjNnjkaNGqW+ffvq0KFDCggI0KJFizRp0iTt2LHDdKJleHh46MiRI5nunAIehpPpAAAAAJjVq1cvhYSEaMeOHYqJidHp06cz/C/MKFSoEIMpw+bOnavg4GC5u7vL3d1dlStX1rx580xnWdLcuXP1+eefq2vXrnJ2dk5fr1Klio4ePWqwzHqeeuopRUVFmc7AY4Y7pwAAACzuzJkzWrFihQIDA02nWFK1atW0fv16+fj4KCQk5E9350RGRmZjmbVNmDBB7733nvr37686depIkrZu3ap+/frp6tWrGjRokOFCazl//vwD/45KS0vTvXv3DBRZ12uvvabBgwfr3Llzql69uvLkyZPhOUfB8XcwnAIAALC4Ro0aKTo6muGUIW3atFHu3LnTv+bomGP45JNP9Omnn2a46ys0NFQVK1bUiBEjGE5lswoVKmjLli2ZjpItXrw4/W2KyB6/XnoeFhaWvsZRcDwshlMAAAAW17p1aw0aNEgHDx5UcHBwpgvRQ0NDDZVZw/Dhw9O/HjFihLkQZHDx4kXVrl0703rt2rV18eJFA0XWNmzYMPXo0UPnz59XWlqali5dqmPHjmnu3Ln67rvvTOdZym/fnAhkFS5EBwAAsDgnpz++hpT/Cp69AgICtGfPHhUoUCDDekJCgqpVq8YdYNmoUqVK6tKli/71r39lWP/ggw+0aNEiHTx40FCZdW3ZskWjRo1SdHS0EhMTVa1aNQ0bNkxNmzY1nQbgITGcAgAAAByEk5OTLl26lOm17JcvX5afn5/u3r1rqMx6lixZok6dOqlJkybpd05t27ZN69ev19dff6127doZLgTMOXXqlCZNmqQjR45Iun/scuDAgSpdurThMuRUHOsDAAAADFuxYkX612vWrJGXl1f696mpqVq/fr38/f1NpFlWhw4dtHv3bk2YMEHffvutJCkoKEi7d+/mjiNY2po1axQaGqqqVatmGNxWrFhRK1eu1LPPPmu4EDkRO6cAAAAAw349WvnrpcK/5eLiolKlSmn8+PF67rnnTORZzr179/TKK6/ovffeYyhoUP78+XX8+HEVLFhQPj4+f/qygPj4+Gwss7aQkBA1a9ZMY8eOzbA+dOhQrV27lreK4m9hOAUAAAA4CH9/f+3Zs0cFCxY0nWJ5Xl5e2r9/P8Mpg+bMmaPOnTsrd+7cmjNnzp9+tkePHtlUBTc3Nx08eFBlypTJsH78+HFVrlxZt2/fNlSGnIxjfQAAAICD4C1YjqNt27b69ttvNWjQINMplvXbgRPDJ8dRqFAh7d+/P9Nwav/+/ZnuywP+KoZTAAAAgANJSkpSRESEYmNjM12AHhYWZqjKesqUKaNRo0Zp27Ztql69uvLkyZPhOb8Xj96NGzf+8mfz5cv3CEvwW3379tXLL7+smJgY1a5dW9L9O6fGjRun8PBww3XIqTjWBwAAYHGRkZFycXFRcHCwJGn58uWaNWuWKlSooBEjRsjV1dVwoXVERUWpZcuWSk5OVlJSkvLnz6+rV6/Kw8NDvr6+iomJMZ1oGX92nM9ms/F7kQ2cnJz+9J4pSbLb7bLZbEpNTc2mKtjtdk2aNEnjx4/XhQsXJEnFihXTm2++qbCwsP/v7xnwIAynAAAALO7JJ5/U0KFD1aFDB8XExKhixYpq166d9uzZo1atWmnSpEmmEy2jQYMGKlu2rKZNmyYvLy9FR0fLxcVF3bp108CBA9W+fXvTiUC2iYiI+MufrV+//iMswYoVK9SiRQu5uLhkWL9586YkydPT00QWHiMMpwAAACzOy8tLkZGRKl26tMaNG6cNGzZozZo12rZtmzp37qyzZ8+aTrQMb29v7dq1S+XKlZO3t7d27NihoKAg7dq1Sz169NDRo0dNJ1rSrz8ysSMEVuXs7KxLly6pUKFCcnZ21sWLF7lfClnKyXQAAAAAzLLb7UpLS5MkrVu3Ti1btpQk+fn56erVqybTLMfFxUVOTvf/Fd3X11exsbGS7g8QGRJmv5kzZ6pSpUpyc3OTm5ubKlWqpBkzZpjOsqwtW7aoW7duql27ts6fPy9JmjdvnrZu3Wq47PFXqFAh7dy5U9L/HaUEshLDKQAAAIurUaOGPvjgA82bN08RERFq1aqVpPtvjitcuLDhOmsJCQnRnj17JN0/pjRs2DDNnz9fb7zxhipVqmS4zlqGDRumgQMHqnXr1vrmm2/0zTffqHXr1ho0aJCGDRtmOs9ylixZombNmsnd3V2RkZG6c+eOJOmXX37Rhx9+aLju8devXz+1adNGzs7OstlsKlKkiJydnR/4C/g7ONYHAABgcQcOHFDXrl0VGxur8PBwDR8+XJI0YMAAXbt2TQsWLDBcaB179+7VzZs31bBhQ8XFxal79+7avn27ypQpoy+++EJVqlQxnWgZhQoV0pQpU/TCCy9kWP/qq680YMAAdhVms5CQEA0aNEjdu3eXp6enoqOjFRAQoKioKLVo0UKXLl0ynfjYO3r0qE6ePKnQ0FDNmjVL3t7eD/xcmzZtsjcMjwWGUwAAAHig27dvy9nZOdMFuIAVeHt7a8+ePSpTpkyG9ePHj+upp55SQkKCmTCL8vDw0OHDh1WqVKkMw6mYmBhVqFBBt2/fNp1oGSNHjtSbb74pDw8P0yl4jHCsDwAAAA/k5ubGYMqQuLg4bdmyRVu2bNGVK1dM51jSiy++qE8//TTT+ueff66uXbsaKLK2IkWK6OTJk5nWt27dqoCAAANF1jV8+HC5urpq3bp1+uyzz9Lf2HfhwgUlJiYarkNOlct0AAAAAMzw9/fPcKltTEyMwRpI91/L/tprr2nhwoVKTU2VdP8tWZ06ddJ//vMfeXl5GS60lpkzZ2rt2rV6+umnJUm7du1SbGysunfvrvDw8PTPTZgwwVSiZfTt21cDBw7UF198IZvNpgsXLmjHjh0aMmSI3nvvPdN5lnLmzBk1b95csbGxunPnjp599ll5enpq3LhxunPnjqZNm2Y6ETkQwykAAACLmj17tukE/E6fPn0UFRWl7777TrVq1ZIk7dixQwMHDtQrr7yihQsXGi60jkOHDqlatWqSpFOnTkmSChYsqIIFC+rQoUPpn+OtZdlj6NChSktLU+PGjZWcnKx69eopd+7cGjJkiAYMGGA6z1IGDhyoGjVqKDo6WgUKFEhfb9eunfr27WuwDDkZd04BAAAADiJPnjxas2aNnnnmmQzrW7ZsUfPmzZWUlGSoDDAnNTVV27ZtU+XKleXh4aGTJ08qMTFRFSpUUN68eU3nWU6BAgW0fft2lStXLsP9Xz///LMqVKig5ORk04nIgbhzCgAAwOKcnZ0VFxeXaf3atWu8FjybFShQ4IFH97y8vOTj42OgCDDP2dlZTZs21fXr1+Xq6qoKFSroqaeeYjBlSFpaWvqx4986d+6cPD09DRThccBwCgAAwOL+aCP9nTt35Orqms011vbuu+8qPDxcly5dSl+7dOmS3nzzTe7VgaVVqlSJe/EcRNOmTTVp0qT07202mxITEzV8+HC1bNnSXBhyNI71AQAAWNSUKVMkSYMGDdL777+fYRdCamqqNm/erJ9//llRUVGmEi0hJCQkw71FJ06c0J07d1SiRAlJUmxsrHLnzq0yZcooMjLSVCZg1OrVq/X222/r/fffV/Xq1ZUnT54Mz/Ply2eozHrOnj2r5s2by26368SJE6pRo4ZOnDihggULavPmzfL19TWdiByI4RQAAIBF+fv7S7r/5qUnnngiwxE+V1dXlSpVSqNGjVLNmjVNJVrCyJEj//Jnhw8f/ghLAMfl5PR/h35+O8y12+2y2WwPPGaGRyclJUWLFi1SdHS0EhMTVa1aNXXt2lXu7u6m05BDMZwCAACwuIYNG2rp0qXcaQT8xubNm1W7dm3lypXxBecpKSnavn276tWrZ6jMmiIiIv70ef369bOpxNru3bun8uXL67vvvlNQUJDpHDxGGE4BAAAADmbfvn06cuSIJKlixYoKCQkxXGQ9zs7OunjxYqYjSteuXZOvry87dWBZxYsX17p16xhOIUvl+v9/BAAAAI+z1NRUzZ49W+vXr1dcXJzS0tIyPN+wYYOhMuuJi4tT586dtWnTJnl7e0uSEhIS1LBhQy1cuFCFChUyG2ghvx4X+71r165luu8IsJLXX39d48aN04wZMzLtLAT+Lv5JAgAAsLiBAwdq9uzZatWqlSpVqvTAH8iRPQYMGKCbN2/qp59+St+VcPjwYfXo0UNhYWH66quvDBc+/tq3by/p/r1GPXv2VO7cudOfpaam6sCBA6pdu7apPMC4PXv2aP369Vq7dq2Cg4MzDWuXLl1qqAw5GcMpAAAAi1u4cKG+/vprXgHuAFavXp3puEyFChX0n//8R02bNjVYZh1eXl6S7u+c8vT0zHDBs6urq55++mn17dvXVB5gnLe3tzp06GA6A48ZhlMAAAAW5+rqqsDAQNMZkJSWliYXF5dM6y4uLpmOW+LRmDVrliSpVKlSGjJkCEf4DFqxYoVatGjxwD8TMOfXPyNAVuJCdAAAAIsbP368YmJiNHXqVI70GdamTRslJCToq6++UrFixSRJ58+fV9euXeXj46Nly5YZLrSOW7duyW63y8PDQ5J05swZLVu2TBUqVGAXWzZxdnbWpUuXVKhQoT+8oB5mpKSkaNOmTTp16pS6dOkiT09PXbhwQfny5VPevHlN5yEHYjgFAABgQb/eq/OrDRs2KH/+/KpYsWKmXQrcH5J9zp49q9DQUP3000/y8/NLX6tUqZJWrFihJ554wnChdTRt2lTt27dXv379lJCQoHLlysnV1VVXr17VhAkT9Oqrr5pOfOwVKVJE06dPV+vWreXk5KTLly/zUgAHcObMGTVv3lyxsbG6c+eOjh8/roCAAA0cOFB37tzRtGnTTCciB+JYHwAAgAX9eq/Or9q1a2eoBL/l5+enyMhIrVu3TkePHpUkBQUFqUmTJobLrCcyMlITJ06UJC1evFhFihRRVFSUlixZomHDhjGcygb9+vVTmzZtZLPZZLPZVKRIkT/8bGpqajaWWdvAgQNVo0YNRUdHq0CBAunr7dq14z42/G3snAIAAAAcwL179+Tu7q79+/erUqVKpnMsz8PDQ0ePHlWJEiXUsWNHVaxYUcOHD9fZs2dVrlw5JScnm060hKNHj+rkyZMKDQ3VrFmz5O3t/cDPtWnTJnvDLKxAgQLavn27ypUrJ09PT0VHRysgIEA///yzKlSowJ8N/C3snAIAAAAcgIuLi0qUKMEOEAcRGBiob7/9Vu3atdOaNWs0aNAgSVJcXJzy5ctnuM46ypcvr/Lly2v48OF6/vnn0+8AgzlpaWkP/Hvq3Llz8vT0NFCExwE7pwAAACwuJCTkgReh22w2ubm5KTAwUD179lTDhg0N1FnLzJkztXTpUs2bN0/58+c3nWNpixcvVpcuXZSamqrGjRtr7dq1kqQxY8Zo8+bN+uGHHwwXWtOVK1d07NgxSVK5cuW4g8qATp06ycvLS59//rk8PT114MABFSpUSG3atFGJEiV4mx/+FoZTAAAAFvf222/r008/VXBwsJ566ilJ0p49e3TgwAH17NlThw8f1vr167V06VKOzjxiISEhOnnypO7du6eSJUsqT548GZ5HRkYaKrOmS5cu6eLFi6pSpYqcnJwkSbt371a+fPlUvnx5w3XWkpycrP79+2vevHnpu3acnZ3VvXt3ffLJJ+yoykbnzp1Ts2bNZLfbdeLECdWoUUMnTpxQwYIFtXnzZt6oiL+F4RQAAIDF9e3bVyVKlNB7772XYf2DDz7QmTNnNH36dA0fPlyrVq3S3r17DVVaw8iRI//0+fDhw7OpxNq4/8vxvPLKK1q3bp2mTp2qOnXqSJK2bt2qsLAwPfvss/r0008NF1pLSkqKFi5cqAMHDigxMVHVqlVT165d5e7ubjoNORTDKQAAAIvz8vLSvn37FBgYmGH95MmTql69un755RcdPXpUTz75pG7evGmoEsheAQEBWrZsmapUqWI6BZIKFiyoxYsXq0GDBhnWN27cqI4dO+rKlStmwgBkCS5EBwAAsDg3Nzdt374903Bq+/btcnNzk3T/Atxfv8ajs2fPHqWlpalmzZoZ1nft2iVnZ2fVqFHDUJn1vPPOO/rXv/7F/V8OIjk5WYULF8607uvry9vhDDhx4oQ2btyouLg4paWlZXg2bNgwQ1XIyRhOAQAAWNyAAQPUr18/7du3T08++aSk+0OSGTNm6F//+pckac2aNapatarBSmt4/fXX9c9//jPTcOr8+fMaN26cdu3aZajMeqZOnaqTJ0+qWLFi3P/lAGrVqqXhw4dr7ty56YPyW7duaeTIkapVq5bhOmuZPn26Xn31VRUsWFBFihTJ8EINm83GcAp/C8f6AAAAoPnz52vq1KkZ3oI1YMAAdenSRdL9HwJ/fXsfHp28efPqwIEDCggIyLB++vRpVa5cmWOV2Yj7vxzLoUOH1KxZM925cyf9qGV0dLTc3Ny0Zs0aVaxY0XChdZQsWVKvvfaa3nrrLdMpeIwwnAIAAAAcRIECBfTdd99l2gmyfft2tWrVStevXzdUBpiXnJys+fPn6+jRo5KkoKAgLuE2IF++fNq/f3+mITrwMBhOAQAAAA7ihRde0MWLF7V8+XJ5eXlJkhISEtS2bVv5+vrq66+/NlwIwOp69+6tJ598Uv369TOdgscIwykAAAALyp8/v44fP66CBQvKx8cnw50hvxcfH5+NZdZ2/vx51atXT9euXVNISIgkaf/+/SpcuLB+/PFH+fn5GS58vPHnAniwKVOmpH+dlJSkCRMmqFWrVgoODpaLi0uGz4aFhWV3Hh4DDKcAAAAsaM6cOercubNy586tOXPm/Olne/TokU1VkO7/4Dd//nxFR0fL3d1dlStX1gsvvJDpB0BkPf5cAA/m7+//lz5ns9kUExPziGvwOGI4BQAAAACSwsPD9f777ytPnjzavHmzateurVy5eME5ADxqDKcAAACgtLQ0nTx5UnFxcUpLS8vwrF69eoaqrOvw4cOKjY3V3bt3M6yHhoYaKrIGFxcXnTt3ToULF5azs7MuXrwoX19f01mAQ4mJieEydGQ5/jMAAACAxe3cuVNdunTRmTNn9Pv/bmmz2ZSammqozHpiYmLUrl07HTx4UDabLf3349e7j/i9eLRKlSqlKVOmqGnTprLb7dqxY4d8fHwe+FmGtrCqwMBAPfHEE6pfv74aNGig+vXrKzAw0HQWcjh2TgEAAFhc1apVVbZsWY0cOVJFixbNdAn0r2+Nw6PXunVrOTs7a8aMGfL399fu3bt17do1DR48WB9//LHq1q1rOvGx9u2336pfv36Ki4vLMBz8PYa22e+PLqi32Wxyc3NTYGCgevbsqZdeeslAnbWcP39emzZtUkREhCIiInTixAkVK1ZM9evXV8OGDdWnTx/TiciBGE4BAABYXJ48eRQdHc1/+XYABQsW1IYNG1S5cmV5eXlp9+7dKleunDZs2KDBgwcrKirKdKIlJCYmKl++fDp27NgfHutjaJu9Jk6cqNGjR6tFixZ66qmnJEm7d+/W6tWrNWjQIJ0+fVrz5s3TJ598or59+xqutZYTJ05o9OjRmj9/vtLS0hjc4m/hWB8AAIDF1axZUydPnmQ45QBSU1Pl6ekp6f6g6sKFCypXrpxKliypY8eOGa6zjrx582rjxo3y9/fnQnQHsXXrVn3wwQfq169fhvXPPvtMa9eu1ZIlS1S5cmVNmTKF4dQjlpycrK1bt2rTpk3atGmToqKiVL58efXv318NGjQwnYccip1TAAAAFrds2TK9++67evPNNxUcHCwXF5cMzytXrmyozHrq1q2rwYMHq23bturSpYuuX7+ud999V59//rn27dunQ4cOmU4EjMibN6/279+faYh+8uRJVa1aVYmJiTp16pQqV66spKQkQ5XW4OrqKh8fH3Xt2lUNGjRQ3bp1//BuNuCv4j8DAAAAWFyHDh0kSb169Upf+/W+He7WyV7vvvtu+g/Wo0aN0nPPPae6deuqQIECWrRokeE6wJz8+fNr5cqVGjRoUIb1lStXKn/+/JKkpKSk9J2HeHRatmyprVu3auHChbp06ZIuXbqkBg0aqGzZsqbTkIOxcwoAAMDizpw586fPS5YsmU0leJD4+Pg/vAwasIrp06fr1VdfVcuWLdPvnNqzZ4++//57TZs2Tb1799b48eO1e/duBrnZ5MCBA+mXom/ZskW5cuVSgwYNNH/+fNNpyIEYTgEAAAAAHN62bds0derU9PvXypUrpwEDBqh27dqGy6zJbrcrKipKGzdu1MaNG7VmzRrZ7XalpKSYTkMOxHAKAAAAAH5n1qxZ6tSpkzw8PEynAA5lwoQJ2rRpk7Zu3aqbN2+qSpUqqlevHvdP4aEwnAIAAACA3ylcuLBu3bql559/Xr1792Z3jgNIS0vTyZMnFRcXp7S0tAzP6tWrZ6jKep588knVr18/fRjl5eVlOgmPAYZTAAAAAPA7KSkpWrlypWbPnq0ffvhBAQEBeumll9SjRw8VKVLEdJ7l7Ny5U126dNGZM2f0+x9heXEDkPM5mQ4AAAAArKxatWq6fv26pPtv6EtOTjZcBEnKlSuX2rVrp+XLl+vs2bPq27ev5s+frxIlSig0NFTLly/PtHsHj06/fv1Uo0YNHTp0SPHx8bp+/Xr6r/j4eNN5AB4SO6cAAAAsLiAgQHv27FGBAgUyrCckJKhatWqKiYkxVGYN7u7uOnHihJ544gk5Ozvr4sWL8vX1NZ2F39m1a5e++OILzZkzR0WLFtX169fl4+OjWbNmqUGDBqbzHnt58uRRdHS0AgMDTacAeARymQ4AAACAWT///PMDj8TcuXNH58+fN1BkLVWrVtVLL72kZ555Rna7XR9//LHy5s37wM8OGzYsm+us7fLly5o3b55mzZqlmJgYtW3bVt99952aNGmipKQkjRo1Sj169NCZM2dMpz72atasqZMnTzKcAh5T7JwCAACwqBUrVkiS2rZtqzlz5mS41DY1NVXr16/Xjz/+mP7adjwax44d0/Dhw3Xq1ClFRkaqQoUKypUr839DttlsioyMNFBoTa1bt9aaNWtUtmxZ9enTR927d1f+/PkzfCYuLk5FihTheF82WLZsmd599129+eabCg4OlouLS4bnlStXNlQGICswnAIAALAoJ6f714/abLZMFwy7uLioVKlSGj9+vJ577jkTeZbk5OSkS5cucazPAfTu3Vt9+vRRrVq1/vAzdrtdsbGxKlmyZDaWWdOvf1/91q9/d3EhOpDzMZwCAACwOH9/f+3Zs0cFCxY0nQIAD/T/OzrJgNAxNGrUSA0bNtTgwYPl4eFhOgc5CMMpAAAAZJKQkCBvb2/TGZZ06tQpTZo0SUeOHJEkVahQQQMHDlTp0qUNl1nPnj17tHHjRsXFxWU6ujdhwgRDVYDj6tmzp37++WfFxMQoNjbWdA5yEIZTAAAAFjdu3DiVKlVKnTp1kiQ9//zzWrJkiYoWLarvv/9eVapUMVxoHWvWrFFoaKiqVq2qOnXqSJK2bdum6OhorVy5Us8++6zhQuv48MMP9e6776pcuXIqXLiwbDZb+jObzaYNGzYYrLOGFStWqEWLFnJxcUm/I++PhIaGZlMV/oobN24oX758pjOQgzCcAgAAsDh/f3/Nnz9ftWvX1o8//qiOHTtq0aJF+vrrrxUbG6u1a9eaTrSMkJAQNWvWTGPHjs2wPnToUK1du5YL0bNR4cKFNW7cOPXs2dN0imX99g62B9059SvunAJyPoZTAAAAFufu7q7jx4/Lz89PAwcO1O3bt/XZZ5/p+PHjqlmzpq5fv2460TLc3Nx08OBBlSlTJsP68ePHVblyZd2+fdtQmfUULVpUmzdvzvR7AUCKiIjQxx9/nOH48Ztvvqm6desaLkNO9cfjZwAAAFiCj4+Pzp49K0lavXq1mjRpIun+m8jYjZC9ChUqpP3792da379/P2/wy2aDBg3Sf/7zH9MZgMP58ssv1aRJE3l4eCgsLExhYWFyd3dX48aNtWDBAtN5yKFymQ4AAACAWe3bt1eXLl1UpkwZXbt2TS1atJAkRUVFKTAw0HCdtfTt21cvv/yyYmJiVLt2bUn375waN26cwsPDDddZy5AhQ9SqVSuVLl1aFSpUkIuLS4bnS5cuNVRmHVOmTPnLnw0LC3uEJfit0aNH66OPPtKgQYPS18LCwjRhwgS9//776tKli8E65FQc6wMAALC4e/fuafLkyTp79qx69uypkJAQSdLEiRPl6empPn36GC60DrvdrkmTJmn8+PG6cOGCJKlYsWJ68803FRYWluFSbjxa/fv314wZM9SwYcNMF6JL0qxZswyVWYe/v/9f+pzNZlNMTMwjrsGvcufOrZ9++inTf7w4efKkKlWqxPFj/C0MpwAAAAAHdPPmTUmSp6en4RJr8vT01MKFC9WqVSvTKYBDCQwM1JtvvqlXXnklw/q0adM0fvx4nThxwlAZcjKO9QEAAECSdPjwYcXGxuru3bsZ1nlFuxkMpczKnz+/SpcubToDv3P37l2dPn1apUuXVq5c/DhrwuDBgxUWFqb9+/dnOH48e/ZsTZ482XAdcip2TgEAAFhcTEyM2rVrp4MHD8pms+nXfz389RgTl6LDimbNmqXVq1dr1qxZ8vDwMJ1jecnJyRowYIDmzJkj6f4bLAMCAjRgwAAVL15cQ4cONVxoLcuWLdP48ePT39YXFBSkN998U23atDFchpyK4RQAAIDFtW7dWs7OzpoxY4b8/f21e/duXbt2TYMHD9bHH3/Mq8FhSSEhITp16pTsdrtKlSqV6UL0yMhIQ2XWNHDgQG3btk2TJk1S8+bNdeDAAQUEBGj58uUaMWKEoqKiTCcCeAjsgwQAALC4HTt2aMOGDSpYsKCcnJzk5OSkZ555RmPGjFFYWBg/9MGS2rZtazoBv/Htt99q0aJFevrppzNcTl+xYkWdOnXKYJk1JSQkaPHixYqJidGQIUOUP39+RUZGqnDhwipevLjpPORADKcAAAAsLjU1Nf1+o4IFC+rChQsqV66cSpYsqWPHjhmus5a5c+eqU6dOyp07d4b1u3fvauHCherevbuhMusZPny46QT8xpUrV+Tr65tpPSkpibdYZrMDBw6oSZMm8vLy0s8//6w+ffoof/78Wrp0qWJjYzV37lzTiciBnEwHAAAAwKxKlSopOjpaklSzZk199NFH2rZtm0aNGqWAgADDddby0ksv6Zdffsm0fvPmTb300ksGigDHUKNGDa1atSr9+18HUjNmzFCtWrVMZVlSeHi4evbsqRMnTsjNzS19vWXLltq8ebPBMuRk7JwCAACwuHfffVdJSUmSpFGjRum5555T3bp1VaBAAS1atMhwnbXY7fYH7gI5d+6cvLy8DBQBjuHDDz9UixYtdPjwYaWkpGjy5Mk6fPiwtm/froiICNN5lrJnzx599tlnmdaLFy+uS5cuGSjC44DhFAAAgMU1a9Ys/evAwEAdPXpU8fHx8vHx4bhMNgkJCZHNZpPNZlPjxo2VK9f//Wt6amqqTp8+rebNmxssBMx65plntH//fo0dO1bBwcFau3atqlWrph07dig4ONh0nqXkzp1bN27cyLR+/PhxFSpUyEARHgcMpwAAAJBJ/vz5TSdYyq+Xb+/fv1/NmjVT3rx505+5urqqVKlS6tChg6E6wDGULl1a06dPN51heaGhoRo1apS+/vprSfePWMbGxuqtt97i7yn8bTa73W43HQEAAIDs1b59+7/82aVLlz7CEvzWnDlz1KlTpwz3uAC479SpU5o1a5ZiYmI0adIk+fr66ocfflCJEiVUsWJF03mW8csvv+gf//iH9u7dq5s3b6pYsWK6dOmSatWqpe+//1558uQxnYgciOEUAACABf03l2vPmjXrEZbgQfbt26cjR45IkipWrKiQkBDDRdYTHh7+wHWbzSY3NzcFBgaqTZs27DLMJhEREWrRooXq1KmjzZs368iRIwoICNDYsWO1d+9eLV682HSi5WzdulUHDhxQYmKiqlWrpiZNmphOQg7GcAoAAABwEHFxcercubM2bdokb29vSVJCQoIaNmyohQsXcp9LNmrYsKEiIyOVmpqqcuXKSbp/p46zs7PKly+vY8eOyWazaevWrapQoYLh2sdfrVq19Pzzzys8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KysrHDlyBOPHj8eqVatgamqKDRs2wNPT84OOy+QUERERERERERHBw8MDJSUlFa7fvHlzuduEhYX9p+MyOUVEREREREREJJSqUzglGM45RUREREREREREgmHlFBERERERERGRUFg5xcopIiIiIiIiIiISDiuniIiIiIiIiIgEw9IpVk4REREREREREZFgWDlFRERERERERCSQEhZOMTlFRERERERERCQYJqc4rI+IiIiIiIiIiITDyikiIiIiIiIiIqGIWDrFyikiIiIiIiIiIhIMk1NERERERERERCQYJqeIiIiIiIiIiEgwnHOKiIiIiIiIiEgonHKKlVNERERERERERCQcVk4REREREREREQmFd+tjcoqIiIiIiIiISDDMTXFYHxERERERERERCYeVU0REREREREREAikROoAqgJVTREREREREREQkGFZOEREREREREREJhROis3KKiIiIiIiIiIiEw8opIiIiIiIiIiKhsHCKlVNERERERERERCQcVk4REREREREREQmGpVNMThERERERERERCYW5KQ7rIyIiIiIiIiIi4bByioiIiIiIiIhIKKycYuUUEREREREREREJh5VTREREREREREQCKRGxdIqVU0REREREREREJBgmp4iIiIiIiIiISDBMThERERERERERkWCYnCIiInh4eGDcuHGS55aWlli5cqVg8bwkEolw4MABocN45/Xw8fFBjx49Plk872vz5s3Q1tb+oG2q6rlUljdf+0RERESfnEhUeY9qghOiExFVET4+Pnj+/HmVSMZUFUlJSdDR0RE6jE9OJBJh//79/zlJ1K9fP3Tq1OnjBPUaS0tLjBs3TiqpExgYCB8fH9y9e/ejH68y7du3DwoKCkKHUWU0amgNn4EecHQwhaGBFsZO8MfZwBtCh1XjdKvngr6ubtBVVUX8kzT8ci4At1JTKmyvpqiEIc1aoJV1HWgoKyE1MxO/BQch9N5dAICKggJ8mrZAK2sbaKuoIu5xKn4LDnrrPqmUV10X9KjXCNoqqrj7NA0bLgUiLq3i66aqqAhv1xZoZlEH6kpKeJyViU2h53Dt4V0AQL8GTdGvQTOpbR6kP4Xv/m2VeRo1QjsbF3jZN4KWsiruP0/D9rBA3HlWcV+oKCiid70WaGhSB2qKSniSk4k/ws8hMvkuAMBOvza87BvBUscQ2irq+PnC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7gtEpz7ClCO7kZH3YTfWkDWXH8RCQ0kFPZyaQUtZFfefp2HF+QPIyCvtC11V6b549iILy88dwJcN2mDu59549iILp2PDcTTmVV9Y6hpisscXkuf9G7QBAATfjcKmy6c+0ZnVDHWb2uJFxgtc2HcJOek5MDDXR2+/LpJhfRlPMyESv0qC5Gbn4aR/AHLSc6CkpgQjS0N8OaM39Ex0hToFqgZEJW9+oyQiIipHVlYWTExM4O/vj169elX68fLy8qCsrIxTp06hffv2H7Tt0KFD8fjxYxw8eLCSoqs5OnToAGNjY6m7MdJ/49xwotAh0GuMhpoJHQL9Q1Ot+vwFv6bTLv8meCSAZmZ8X1QV3zQrOyfpp1L388qbrzLm5I+Vtu+PiZVTRET0VsXFxUhLS8OyZcugra2Nbt26VfoxMzIysG/fPojFYtStW/e9t0tPT0dkZCR27NjBxFQ5cnJysGbNGnh6ekJOTg5//PEHTp8+jVOn+BdkIiIiIsEwR8nkFBERvV1iYiKsrKxgamqKzZs3Q16+8v/XMWvWLOzYsQOLFy+Gqanpe2/XvXt3hIaGYuTIkejQoUMlRlg9iUQiHD16FPPnz0dubi7s7e2xd+/eD65MIyIiIiL6mJicIiKit7K0tCwzp1BlW7FiBVasWPHB2wUGBn78YGoQFRUVnD59WugwiIiIiOh11Wji8srCu/UREREREREREZFgmJwiIiIiIiIiIiLBMDlFRERERERERESC4ZxTREREREREREQCKeGcU6ycIiIiIiIiIiIi4bByioiIiIiIiIhIKCycYuUUEREREREREREJh8kpIiIiIiIiIiISDIf1EREREREREREJhBOis3KKiIiIiIiIiIgExMopIiIiIiIiIiKhsHCKlVNERERERERERCQcVk4REREREREREQmFlVOsnCIiIiIiIiIiIuGwcoqIiIiIiIiISDAsnWJyioiIiIiIiIhIICXMTXFYHxERERERERERCYeVU0REREREREREQmHlFCuniIiIiIiIiIhIOKycIiIiIiIiIiISDEunWDlFRERERERERESCYeUUEREREREREZFAeLc+Vk4REREREREREZGAWDlFRERERERERCQUVk4xOUVEREREREREJBxmpzisj4iIiIiIiIiIBMPKKSIiIiIiIiIigXBCdFZOERERERERERGRgFg5RUREREREREQkFFZOsXKKiIiIiIiIiIiEw+QUEREREREREZFgRJX4+HC//vorLC0toaysjKZNmyI0NLTCtgUFBZg7dy5sbGygrKyM+vXr4/jx4x98TCaniIiIiIiIiIgIu3btwoQJEzBr1ixcu3YN9evXh6enJ1JTU8ttP336dKxduxY///wzoqKiMHLkSPTs2RNhYWEfdFwmp4iIiIiIiIiIhFKFCqeWL1+O4cOHY/DgwXB0dMSaNWugqqqKTZs2ldt+27Zt+OGHH9CpUydYW1vj22+/RadOnbBs2bIPOi4nRCciIiIiIiIiEkhJJU6InpeXh7y8PKllSkpKUFJSKtM2Pz8fV69exdSpUyXLxGIx2rdvj5CQkAr3r6ysLLVMRUUFwcHBHxQnK6eIiIiIiIiIiGqghQsXQktLS+qxcOHCctumpaWhqKgIRkZGUsuNjIyQnJxc7jaenp5Yvnw5YmNjUVxcjFOnTmHfvn1ISkr6oDiZnCIiIiIiIiIiEkolDuubOnUq0tPTpR6vV0b9V6tWrYKtrS3q1q0LRUVFjB49GoMHD4ZY/GHpJianiIiIiIiIiIhqICUlJWhqako9yhvSBwD6+vqQk5NDSkqK1PKUlBQYGxuXu42BgQEOHDiA7Oxs3Lt3DzExMVBXV4e1tfUHxck5p4iIiIg+IqOhZkKHQK9J2Xhf6BDoHw3mmQsdAv3DWL0SJ7ihD5Ke9+42JAuqxntSUVERjRo1wpkzZ9CjRw8AQHFxMc6cOYPRo0e/dVtlZWWYmJigoKAAe/fuRd++fT/o2ExOERERERERERERJkyYgEGDBsHNzQ1NmjTBypUrkZ2djcGDBwMABg4cCBMTE8m8VZcuXcLDhw/RoEEDPHz4ELNnz0ZxcTG+//77Dzouk1NERERERERERAKpzLv1fah+/frh8ePHmDlzJpKTk9GgQQMcP35cMkl6YmKi1HxSubm5mD59OhISEqCuro5OnTph27Zt0NbW/qDjMjlFREREREREREQAgNGjR1c4jC8wMFDqubu7O6Kiov7zMZmcIiIiIiIiIiISShWqnBIK79ZHRERERERERESCYXKKiIiIiIiIiIgEw2F9RERERERERERCEXFcHyuniIiIiIiIiIhIMKycIiIiIiIiIiISSAkLp1g5RUREREREREREwmFyioiIiIiIiIiIBMPkFBERERERERERCYZzThERERERERERCYVzTjE5RUREREREREQkGBGzUxzWR0REREREREREgmHlFBERERERERGRQEqEDqAKYOUUEREREREREREJhpVTRERERERERERC4ZRTrJwiIiIiIiIiIiLhsHKKiIiIiIiIiEgorJxi5RQREREREREREQmHySkiIiIiIiIiIhIMh/UREREREREREQlFxHF9rJwiIiIiIiIiIiLBsHKKiIiIiIiIiEggJSycYuUUEREREREREREJh8kpIiIiIiIiIiISDJNTREREREREREQkGM45RUREREREREQkFM45xcopIiIiIiIiIiISDiuniIiIiIiIiIiEwsopVk4REREREREREZFwWDlFRERERERERCQYlk4xOUVEREREREREJBTmpjisj4iIiIiIiIiIhMPKKSIiIiIiIiIiobByipVTREREREREREQkHFZOEREREREREREJpEToAKoAVk4REREREREREZFgmJwiIpmxefNmaGtrf/T93r17FyKRCOHh4R91v5aWlli5cuVH3ef7iomJQbNmzaCsrIwGDRoIEkNFZs+eXWkxVea+6dMLDAyESCTC8+fPhQ6FiIiIqGKiSnxUExzWR0TV0uzZs3HgwIGPnhCqzj7mNZk1axbU1NRw69YtqKur//fgqiCRSIT9+/ejR48ekmV+fn4YM2aMcEHJGA8PDzRo0ECwJKws6VbPBX1d3aCrqor4J2n45VwAbqWmVNheTVEJQ5q1QCvrOtBQVkJqZiZ+Cw5C6L27AAAVBQX4NG2BVtY20FZRRdzjVPwWHPTWfdKHadTQGj4DPeDoYApDAy2MneCPs4E3hA6rxmlh4QIPq0bQUFJFUmYa9t8MxP308l/HbiYO+LL+51LLCooKMfXEr5LnSzuNLXfbw9HnEXjn2scLvAa6GRCJ6yfC8CI9B7pmemjRvw0MrYzKbXv7QjSCNp+VWiYnL4chv4+UPL96MBTxl2OR/TQLYnk56FsYoHGPpjC0Nq7U86gJogIicf3kP31hqofmb+uLi9E4V05fDP5Nui8SLsci+9k/fWFuADf2Bb2BySkiIiojPj4enTt3hoWFxSc7Zn5+PhQVFT/Z8cqjrq5eY5NxNVlVeO1UZR517DCyVRusCjyL6JRk9K7vikVde2Lwji14/uJFmfbyYjGWdOuJ5y9eYO7xw0jLzoaRhgay8vIk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k5/jdshx5Ga9gLKaMgwsDdH1+57QNdET5Byri5d9ce3gP31hqg8v31d9kfVGX+Rn5yF422t9YW6IrpPL9kXsa32hb2mILt/3hE5t9gW9IiopKeHUlURERFShoUOH4vHjxzh48KDQoXwyn332GZycnLB69eoP3rb9rys/fkD0r6VsvP/uRvRJeM4rf15K+vSM1atROUUNx1/jVcck97JzaH4qZt8ueXejf+n+79+/u1EVwMopIiIiKld6ejoiIyOxY8cOmUlMPXv2TDLX3uvVeERERERUeZicIiIionJ1794doaGhGDlyJDp06CB0OJ+Eq6srnj17hsWLF0sNZyYiIiKiysPkFBEREZUrMDBQ6BA+ufLmHiMiIiKqVBxpy7v1ERERERERERGRcFg5RUREREREREQkkNfvgCirWDlFRERERERERESCYXKKiIiIiIiIiIgEw+QUEREREREREREJhnNOEREREREREREJhVNOMTlFRERERERERCQYJqc4rI+IiIiIiIiIiITD5BQREREREREREQmGySkiIiIiIiIiIhIM55wiIiIiIiIiIhKIiHNOsXKKiIiIiIiIiIiEw+QUEREREREREREJhskpIiIiIiIiIiISDOecIiIiIiIiIiISCuecYnKKiIiIiIiIiEgwTE5xWB8REREREREREQmHlVNERERERERERAJh4RQrp4iIiIiIiIiISECsnCIiIiIiIiIiEoqItVOsnCIiIiIiIiIiIsGwcoqIiIiIiIiISCAsnGLlFBERERERERERCYjJKSIiIiIiIiIiEgyH9RERERERERERCYXD+lg5RUREREREREREwmHlFBERERERERGRQFg4xcopIiIiIiIiIiL6x6+//gpLS0soKyujadOmCA0NfWv7lStXwt7eHioqKjAzM8P48eORm5v7QcdkcoqIiIiIiIiISCiiSnx8oF27dmHChAmYNWsWrl27hvr168PT0xOpqanltt+xYwemTJmCWbNmITo6Ghs3bsSuXbvwww8/fNBxmZwiIiIiIiIiIiIsX74cw4cPx+DBg+Ho6Ig1a9ZAVVUVmzZtKrf9xYsX0bJlSwwYMACWlpb4/PPP0b9//3dWW72JySkiIiIiIiIiIoGIRJX3yMvLQ0ZGhtQjLy+v3Djy8/Nx9epVtG/fXrJMLBajffv2CAkJKXebFi1a4OrVq5JkVEJCAo4ePYpOnTp90DVgcoqIiIiIiIiIqAZauHAhtLS0pB4LFy4st21aWhqKiopgZGQktdzIyAjJycnlbjNgwADMnTsXrVq1goKCAmxsbODh4cFhfUREREREREREBEydOhXp6elSj6lTp360/QcGBmLBggX47bffcO3aNezbtw9HjhzBjz/++EH7kf9oERERERERERER0QcR/YuJy9+XkpISlJSU3qutvr4+5OTkkJKSIrU8JSUFxsbG5W4zY8YMfP311xg2bBgAwNnZGdnZ2fjmm28wbdo0iMXvVxPFyikiIiIiIiIiIhmnqKiIRo0a4cyZM5JlxcXFOHPmDJo3b17uNjk5OWUSUHJycgCAkpKS9z42K6eIiIiIiIiIiAgTJkzAoEGD4ObmhiZNmmDlypXIzs7G4MGDAQADBw6EiYmJZN6qrl27Yvny5XB1dUXTpk0RFxeHGTNmoGvXrpIk1ftgcoqIiIiIiIiIiNCvXz88fvwYM2fORHJyMho0aIDjx49LJklPTEyUqpSaPn06RCIRpk+fjocPH8LAwABdu3bF/PnzP+i4opIPqbMiIiIiordq/+tKoUOg16RsvC90CPQPz3nmQodA/zBWr8QJbuiD8Nd41THJ3VewY9tOXlpp+45d7Fdp+/6YWDlFRERE9BFpqvFHX1XSgAmRKuPE9EShQ6B/1B3P90VV0cNR6AiIqgYmp4iIiIiIiIiIhMK/a/FufUREREREREREJBxWThERERERERERCUTE0ikmp4iIiIiIiIiIBMPcFIf1ERERERERERGRcFg5RUREREREREQkEBZOsXKKiIiIiIiIiIgExMopIiIiIiIiIiKBiFg6xcopIiIiIiIiIiISDiuniIiIiIiIiIiEwsopVk4REREREREREZFwWDlFRERERERERCQQFk6xcoqIiIiIiIiIiATEyikiIiIiIiIiIqGwdIrJKSIiIiIiIiIioTA3xWF9REREREREREQkIFZOEREREREREREJRMTSKVZOERERERERERGRcFg5RUREREREREQkFFZOsXKKiIiIiIiIiIiEw8opIiIiIiIiIiKBsHCKlVNERERERERERCQgVk4REREREREREQmEd+tj5RQREREREREREQmIySkiIiIiIiIiIhIMh/UREREREREREQmEw/pYOUVERERERERERAJi5RQRERERERER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Xf+75tixY0hPT4eDgwPi4+Mxc+ZMWFpaVukpde+TzMxMxMfHY8mSJfjss8/eucAUERERUXWxVx8HRCciojIsW7YMjo6OcHd3R0ZGBk6ePFmjMawqEhcXB2NjY+zYsQObN28uc2Ds/5Lc3Fz83//9H5o3b46BAwfC0NAQYWFh732Xs5K+//57NGvWDCYmJpgzZ47YxSEiIiKifwG79RERERHVInbrq1/Yra/+YLe++oPd+uoPduurP8Ts1tdhad116zs7693o1sfMKSIiIiIiIiIiEs1/uw8FEREREREREZGoOOoUM6eIiIiIiIiIiEg0zJwiIiIiIiIiIhKJhIlTzJwiIiIiIiIiIiLxMHOKiIiIiIiIiEgszJxicIqIiIiIiIiISCyMTbFbHxERERERERERiYiZU0REREREREREIuGA6MycIiIiIiIiIiIiETE4RUREREREREREomFwioiIiIiIiIiIRMMxp4iIiIiIiIiIRMIxp5g5RUREREREREREImLmFBERERERERGRSJg4xeAUEREREREREZF4GJ1itz4iIiIiIiIiIhIPM6eIiIiIiIiIiETCAdGZOUVERERERERERCJi5hQRERERERERkUiYOMXMKSIiIiIiIiIiEhEzp4iIiIiIiIiIxMLUKWZOERERERERERGReBicIiIiIiIiIiISiaQOXzXx008/wdLSEioqKmjfvj3Onz9f7rxubm6QSCSlXn369KnWNhmcIiIiIiIiIiISiURSd6/q2r17N3x8fDBv3jxcunQJjo6O8PDwwPPnz8ucf8+ePYiPjxde169fh7y8PIYOHVqt7TI4RUREREREREREWL58Oby9vTF27FjY29tj/fr1UFNTw+bNm8ucX09PDyYmJsLr6NGjUFNTY3CKiIiIiIiIiOidUU9Sp3JycnDx4kW4u7sL0+Tk5ODu7o4zZ85UaR2bNm3Chx9+CHV19Wptm0/rIyIiIiIiIiJ6D2VnZyM7O1tmmrKyMpSVlUvNm5SUhPz8fBgbG8tMNzY2xq1btyrd1vnz53H9+nVs2rSp2uVk5hQRERERERERkUjqckB0Pz8/aGtry7z8/PzqZD82bdoEBwcHtGvXrtrLMnOKiIiIiIiIiOg9NGfOHPj4+MhMKytrCgAMDAwgLy+PZ8+eyUx/9uwZTExMKtxORkYGdu3ahQULFtSonMycIiIiIiIiIiISSx2mTikrK0NLS0vmVV5wSklJCW3atEFoaKgwTSqVIjQ0FC4uLhXuwu+//47s7Gx89NFHNaoCZk4RERERERERERF8fHwwevRoODs7o127dlixYgUyMjIwduxYAMCoUaNgbm5eqmvgpk2bMGDAAOjr69douwxOERERERERERGJpHrP1KtbXl5eSExMxNy5c5GQkAAnJycEBQUJg6THxcVBTk62E15MTAxOnTqFI0eO1Hi7DE4REREREREREREAYOLEiZg4cWKZn4WFhZWaZmtri4KCgrfaJoNTREREREREREQikdSn1CmRMDhFRERERERERCQWBqf4tD4iIiIiIiIiIhIPM6eIiIiIiIiIiETCxCkGp4iIiIhqlY662CWg4kw0+JW/vmg2taHYRaB/3PoxTuwi0D8kv/C8IAIYnCIiIiIiIiIiEg0HROeYU0REREREREREJCIGp4iIiIiIiIiISDQMThERERERERERkWg45hQRERERERERkUg45hSDU0REREREREREomFwit36iIiIiIiIiIhIRAxOERERERERERGRaBicIiIiIiIiIiIi0XDMKSIiIiIiIiIikXDMKWZOERERERERERGRiJg5RUREREREREQkEiZOMXOKiIiIiIiIiIhExMwpIiIiIiIiIiKxMHWKwSkiIiIiIiIiIrFwQHR26yMiIiIiIiIiIhExc4qIiIiIiIiISCRMnGLmFBERERERERERiYiZU0REREREREREYuGgU8ycIiIiIiIiIiIi8TBzioiIiIiIiIhIJMybYuYUERERERERERGJiJlTREREREREREQi4ZBTDE4REREREREREYmGwSl26yMiIiIiIiIiIhExOEVERERERERERKJhcIqIiIiIiIiIiETDMaeIiIiIiIiIiETCMaeYOUVERERERERERCJi5hQRERERERERkUiYOMXMKSIiIiIiIiIiEhEzp4iIiIiIiIiIxMLUKQaniIiIiIiIiIjEwtgUu/UREREREREREZGImDlFRERERERERCQSCVOnmDlFRERERERERETiYeYUEREREREREZFImDnFzCkiIiIiIiIiIhIRg1NERERERERERCQaBqfegq+vL5ycnEQtQ2ZmJgYPHgwtLS1IJBKkpKTUynotLS2xYsUK4b1EIsG+fftqZd1vy9fXF8bGxrVeprCw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Tk5O2Lp1a5WWkZOTQ2BgIKZPn46CggK0aNECISEh1Rpfra4ZGRnBwMAAP//8c7W7eont559/xsKFC/HVV19VOv4XERERERGJ613qfldX2K2PiIiIqBaxW1/9wm599Qe79dUf7NZXf7BbX/0hZre+kTvr7rvD9uHs1kdERERERERERBXgzyjVeFofERERERERERFRbWPmFBERERERERGRWJg6xcwpIiIiIiIiIiISDzOniIiIiIiIiIhEwqf1MThFRERERERERCQaxqbYrY+IiIiIiIiIiETEzCkiIiIiIiIiIpGwWx8zp4iIiIiIiIiISETMnCIiIiIiIiIiEgkTp5g5RUREREREREREImLmFBERERERERGRSDjmFDOniIiIiIiIiIhIRMycIiIiIiIiIiISCROnGJwiIiIiIiIiIhINu/WxWx8REREREREREYmImVNERERERERERGJh5hQzp4iIiIiIiIiISDzMnCIiIiIiIiIiEgkTp5g5RURERERERERE//jpp59gaWkJFRUVtG/fHufPn69w/pSUFHz55ZcwNTWFsrIybGxscOjQoWptk5lTREREREREREQiqU9P69u9ezd8fHywfv16tG/fHitWrICHhwdiYmJgZGRUav6cnBz06NEDRkZG+OOPP2Bubo6HDx9CR0enWttlcIqIiIiIiIiIiLB8+XJ4e3tj7NixAID169fj4MGD2Lx5M2bPnl1q/s2bNyM5ORmnT5+GoqIiAMDS0rLa22W3PiIiIiIiIiIikUjq8JWdnY20tDSZV3Z2dpnlyMnJwcWLF+Hu7i5Mk5OTg7u7O86cOVPmMvv374eLiwu+/PJLGBsbo0WLFli8eDHy8/OrVQcMThERERERERERvYf8/Pygra0t8/Lz8ytz3qSkJOTn58PY2FhmurGxMRISEspc5t69e/jjjz+Qn5+PQ4cO4dtvv4W/vz++++67apWT3fqIiIiIiIiIiERSl2NOzZkzBz4+PjLTlJWVa239UqkURkZG+PnnnyEvL482bdrgyZMn+OGHHzBv3rwqr4fBKSIiIiIiIiIikdTleOjKyspVDkYZGBhAXl4ez549k5n+7NkzmJiYlLmMqakpFBUVIS8vL0yzs7NDQkICcnJyoKSkVKVts1sfEREREREREdF/nJKSEtq0aYPQ0FBhmlQqRWhoKFxcXMpcplOnTrh79y6kUqkw7fbt2zA1Na1yYApgcIqIiIiIiIiISDQSSd29qsvHxwcbN27Eli1bEB0djS+++AIZGRnC0/tGjRqFOXPmCPN/8cUXSE5OxpQpU3D79m0cPHgQixcvxpdfflmt7bJbHxERERERERERwcvLC4mJiZg7dy4SEhLg5OSEoKAgYZD0uLg4yMm9yXOysLBAcHAwpk6dipYtW8Lc3BxTpkzBrFmzqrVdBqeIiIiIiIiIiERSlwOi18TEiRMxceLEMj8LCwsrNc3FxQVnz559q22yWx8REREREREREYmGmVNERERERERERCKpZ4lTomDmFBERERERERERiYaZU0REREREREREIqlvY06JgcEpIiIiIiIiIiKRMDbFbn1ERERERERERCQiZk4REREREREREYmE3fqYOUVERERERERERCJi5hQRERFRLepgwZ8/65PUbLFLQEUG2ItdAioi+aWh2EWgf/iNjxO7CPSPEZfE2za/OTBzioiIiIiIiIiIRMTMKSIiIiIiIiIikXDMKWZOERERERERERGRiJg5RUREREREREQkEiZOMThFRERERERERCQadutjtz4iIiIiIiIiIhIRM6eIiIiIiIiIiETCxClmThERERERERERkYiYOUVEREREREREJBKOOcXMKSIiIiIiIiIiEhEzp4iIiIiIiIiIRMLMKWZOERERERERERGRiJg5RUREREREREQkEiZOMThFRERERERERCQaCfv1sVsfERERERERERGJh5lTREREREREREQiYd4UM6eIiIiIiIiIiEhEzJwiIiIiIiIiIhIJh5xi5hQREREREREREYmImVNERERERERERCJh4hQzp4iIiIiIiIiISETMnCIiIiIiIiIiEokcU6cYnCIiIiIiIiIiEgtjU+zWR0REREREREREImLmFBERERERERGRSCRMnWLmFBERERERERERiYeZU0REREREREREImHiFDOniIiIiIiIiIhIRMycIiIiIiIiIiISCcecYuYUERERERERERGJiJlTREREREREREQiYeIUg1NERERERERERKJhtz526yMiIiIiIiIiIhExc4qIiIiIiIiISCRMnGLmFBERERERERERiYiZU0REREREREREIpFj6hQzp4iIiIiIiIiISDzMnCIiIiIiIiIiEgkTp5g5RUS1wNLSEitWrBC7GFTPiX2c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RERERCJh4hQzp4iIiIiIiIiISETMnCIiIiIiIiIiEgnHnGJwioiIiIiIiIhINIxNsVsfERERERERERGJiJlTREREREREREQiYbc+Zk4REREREREREZGImDlFRERERERERCQSJk4xc4qIiIiIiIiIiETEzCkiIiIiIiIiIpFwzClmThERERERERERkYiYOUVEREREREREJBJmDbEOiIiIiIiIiIhEI5HU3asmfvrpJ1haWkJFRQXt27fH+fPny503MDAQEolE5qWiolLtbTI4RURERERERERE2L17N3x8fDBv3jxcunQJjo6O8PDwwPPnz8tdRktLC/Hx8cLr4cOH1d4ug1NERERERERERCKR1OGrupYvXw5vb2+MHTsW9vb2WL9+PdTU1LB58+byyy+RwMTERHgZGxtXe7sMThERERERERERvYeys7ORlpYm88rOzi5z3pycHFy8eBHu7u7CNDk5Obi7u+PMmTPlbiM9PR2NGjWChYUF+vfvjxs3blS7nAxOERERERERERGJpC7HnPLz84O2trbMy8/Pr8xyJCUlIT8/v1Tmk7GxMRISEspcxtbWFps3b8Zff/2FX3/9FVKpFB07dsTjx4+rVQd8Wh8RERERERER0Xtozpw58PHxkZmmrKxca+t3cXGBi4uL8L5jx46ws7PDhg0bsHDhwiqvh8EpIiIiIiIiIiKR1PChelWirKxc5WCUgYEB5OXl8ezZM5npz549g4mJSZXWoaioiFatWuHu3bvVKie79RERERERERER/ccpKSmhTZs2CA0NFaZJpVKEhobKZEdVJD8/H9euXYOpqWm1ts3MKSIiIiIiIiIikUjqMnWqmnx8fDB69Gg4OzujXbt2WLFiBTIyMjB27FgAwKhRo2Bubi6MW7VgwQJ06NABTZs2RUpKCn744Qc8fPgQ48ePr9Z2GZwiIiIiIiIiIhJJfQpOeXl5ITExEXPnzkVCQgKcnJwQFBQkDJIeFxcHObk3nfBevnwJb29vJCQkQFdXF23atMHp06dhb29fre1KCgoKCmp1T4iIiIj+w34+u0rsIlAxqWU/LZtEYKbB2476oj7dCP/X+Y2PE7sI9I9rl/xF23ZAZN19dxjbdnKdrbs2MXOKiIiIiIiIiEgkjBdzQHQiIiIiIiIiIhIRM6eIiIiIiIiIiETCrrbMnCIiIiIiIiIiIhExc4qIiIiIiIiISCTMGmIdEBERERERERGRiJg5RUREREREREQkEo45xeAUEREREREREZFoJCgQuwiiY7c+IiIiIiIiIiISDTOniIiIiIiIiIhEwm59zJwiIiIiIiIiIiIRSQoKCti5kYiIiIiIiIiIRMHMKSIiIiIiIiIiEg2DU0REREREREREJBoGp4iIiIiIiIiISDQMThERERERERERkWgYnCIiIiIiIiIiItEwOEVERERERERERKJhcIqIiIiIiIiIiETD4BQREREREREREYmGwSkiIiIiIiIiIhLN/wMvm+FM3QCFsQAAAABJRU5ErkJggg==",
            "text/plain": [
              "<Figure size 800x600 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "import seaborn as sns\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "plt.figure(figsize=(8, 6))\n",
        "ax = sns.heatmap(similarities, annot=True, cmap=\"crest\")\n",
        "ax.xaxis.tick_top()\n",
        "ax.set_xticklabels(text, rotation=90)\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GneVOB1yPMXg"
      },
      "source": [
        "## Using `task_type` for different scenarios\n",
        "\n",
        "When generating embeddings, especially for complex systems like Retrieval Augmented Generation (RAG), a one-size-fits-all approach can sometimes lead to lower-quality results. For instance, a question like \"Why is the sky blue?\" and its answer, \"The scattering of sunlight causes the blue color,\" have distinct meanings as statements, and a general-purpose embedding model might not recognize their strong relationship. To solve this, you can specify a `task_type` when creating embeddings. This instructs the model to produce vectors that are specifically optimized for your intended use case, which can significantly improve performance while also saving time and cost.\n",
        "\n",
        "The Gemini embedding model supports several task types, each tailored for a specific goal. Here’s a general overview of the available types and their applications:\n",
        "\n",
        "*   **`SEMANTIC_SIMILARITY`**: Use this when your goal is to assess how semantically similar two pieces of text are.\n",
        "*   **`RETRIEVAL_QUERY`** and **`RETRIEVAL_DOCUMENT`**: These are essential for information retrieval tasks. Use `RETRIEVAL_QUERY` for the user's search query and `RETRIEVAL_DOCUMENT` for the texts in your database that you want to search through. This is the foundation for building effective semantic search and RAG systems.\n",
        "*   **`CLASSIFICATION`**: Choose this task type when you intend to use the embeddings to train a model that classifies text into a set of predefined categories.\n",
        "*   **`CLUSTERING`**: If your goal is to group similar texts together to identify hidden trends or topics without pre-existing labels, this task type will generate embeddings optimized for that purpose."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ppL4T_b_exro"
      },
      "source": [
        "This example is an intuition of how more complex RAG systems work - like when you are building one FAQ system. You will:\n",
        "\n",
        "- define some information, representing data from documents\n",
        "- use the embedding model to generate the embeddings for those information\n",
        "- look for information similar to the question asked\n",
        "- then use a Gemini generative model to customize one answer to the question.\n",
        "\n",
        "First you will declare the information representing the documents, create one structure including document titles and contents and create a dataframe from it."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "cVg9Ifh8jsBc"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>title</th>\n",
              "      <th>contents</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Climate control system</td>\n",
              "      <td>Operating the Climate Control System Your Goog...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Touchscreen</td>\n",
              "      <td>Your Googlecar has a large touchscreen display...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Shifting gears</td>\n",
              "      <td>Shifting Gears Your Googlecar has an automatic...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                    title                                           contents\n",
              "0  Climate control system  Operating the Climate Control System Your Goog...\n",
              "1             Touchscreen  Your Googlecar has a large touchscreen display...\n",
              "2          Shifting gears  Shifting Gears Your Googlecar has an automatic..."
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "contents01 = \"\"\"Operating the Climate Control System Your Googlecar has a climate control system that allows you to adjust the temperature and airflow in the car.\n",
        "To operate the climate control system, use the buttons and knobs located on the center console.\n",
        "Temperature: The temperature knob controls the temperature inside the car.\n",
        "Turn the knob clockwise to increase the temperature or counterclockwise to decrease the temperature.\n",
        "Airflow: The airflow knob controls the amount of airflow inside the car.\n",
        "Turn the knob clockwise to increase the airflow or counterclockwise to decrease the airflow.\n",
        "Fan speed: The fan speed knob controls the speed of the fan.\n",
        "Turn the knob clockwise to increase the fan speed or counterclockwise to decrease the fan speed.\n",
        "Mode: The mode button allows you to select the desired mode.\n",
        "The available modes are: Auto: The car will automatically adjust the temperature and airflow to maintain a comfortable level.\n",
        "Cool: The car will blow cool air into the car.\n",
        "Heat: The car will blow warm air into the car.\n",
        "Defrost: The car will blow warm air onto the windshield to defrost it.\n",
        "\"\"\"\n",
        "\n",
        "contents02 = \"\"\"Your Googlecar has a large touchscreen display that provides access to a variety of features, including navigation, entertainment, and climate control.\n",
        "To use the touchscreen display, simply touch the desired icon.\n",
        "For example, you can touch the \"Navigation\" icon to get directions to your destination or touch the \"Music\" icon to play your favorite songs.\n",
        "\"\"\"\n",
        "\n",
        "contents03 = \"\"\"Shifting Gears Your Googlecar has an automatic transmission.\n",
        "To shift gears, simply move the shift lever to the desired position.\n",
        "Park: This position is used when you are parked. The wheels are locked and the car cannot move.\n",
        "Reverse: This position is used to back up.\n",
        "Neutral: This position is used when you are stopped at a light or in traffic.\n",
        "The car is not in gear and will not move unless you press the gas pedal.\n",
        "Drive: This position is used to drive forward.\n",
        "Low: This position is used for driving in snow or other slippery conditions.\n",
        "\"\"\"\n",
        "\n",
        "document01 = {\n",
        "    \"title\": \"Climate control system\",\n",
        "    \"contents\": \" \".join(contents01.split())\n",
        "}\n",
        "document02 = {\n",
        "    \"title\": \"Touchscreen\",\n",
        "    \"contents\": \" \".join(contents02.split())\n",
        "}\n",
        "document03 = {\n",
        "    \"title\": \"Shifting gears\",\n",
        "    \"contents\": \" \".join(contents03.split())\n",
        "}\n",
        "\n",
        "documents = [document01, document02, document03]\n",
        "\n",
        "docs_df = pd.DataFrame(documents)\n",
        "docs_df.columns = ['title', 'contents']\n",
        "docs_df"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ACoh7e3ZpiTO"
      },
      "source": [
        "Now you will create the embeddings using the (`RETRIEVAL_DOCUMENT` task type) column into the dataframe:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "nMeeFpSUpp2Q"
      },
      "outputs": [
        {
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>title</th>\n",
              "      <th>contents</th>\n",
              "      <th>embeddings</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Climate control system</td>\n",
              "      <td>Operating the Climate Control System Your Goog...</td>\n",
              "      <td>[0.025201924, -0.003934131, 0.013785498, -0.04...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Touchscreen</td>\n",
              "      <td>Your Googlecar has a large touchscreen display...</td>\n",
              "      <td>[0.02184716, -0.004145778, 0.004038047, -0.059...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Shifting gears</td>\n",
              "      <td>Shifting Gears Your Googlecar has an automatic...</td>\n",
              "      <td>[0.012534659, 0.017149324, 0.0006287712, -0.04...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                    title                                           contents  \\\n",
              "0  Climate control system  Operating the Climate Control System Your Goog...   \n",
              "1             Touchscreen  Your Googlecar has a large touchscreen display...   \n",
              "2          Shifting gears  Shifting Gears Your Googlecar has an automatic...   \n",
              "\n",
              "                                          embeddings  \n",
              "0  [0.025201924, -0.003934131, 0.013785498, -0.04...  \n",
              "1  [0.02184716, -0.004145778, 0.004038047, -0.059...  \n",
              "2  [0.012534659, 0.017149324, 0.0006287712, -0.04...  "
            ]
          },
          "execution_count": 17,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "docs_df[\"embeddings\"] = docs_df.apply(lambda x: client.models.embed_content(model=MODEL_ID, contents=(x['contents']), config=types.EmbedContentConfig(task_type=\"RETRIEVAL_DOCUMENT\")).embeddings[0].values, axis=1)\n",
        "docs_df"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "5TvY9uIXqsdF"
      },
      "source": [
        "Now you will create a function to do the interaction between questions and the search in the dataframe.\n",
        "\n",
        "The `find_best_passage` function to, instead of searching for simple keywords, it searches for meaning.\n",
        "\n",
        "Here’s a step-by-step breakdown of what it does when you ask a question:\n",
        "\n",
        "- First, the function takes your query (e.g., \"how do I change gears?\") and uses the embedding model to convert it into an embedding using the `RETRIEVAL_QUERY` task type.\n",
        "- Then the function compares the embeddings from your question to the numbers of every single document. It calculates a similarity score for each pair. A higher score means the meanings are more closely aligned.\n",
        "- Finally, the function identifies the document with the single highest similarity score and returns its original text as the most relevant answer to your question"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "5kdBf-Phkr-n"
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "\n",
        "def find_best_passage(query: str, dataframe: pd.DataFrame, model: str) -> str:\n",
        "\n",
        "  # 1. Create an embedding for the user's query.\n",
        "  query_embedding = client.models.embed_content(\n",
        "      model=model,\n",
        "      contents=query,\n",
        "      config=types.EmbedContentConfig(task_type=\"RETRIEVAL_QUERY\")\n",
        "  )\n",
        "\n",
        "  # 2. Calculate the dot product to find the similarity between the query and all documents\n",
        "  dot_products = np.dot(np.stack(dataframe.embeddings), query_embedding.embeddings[0].values)\n",
        "\n",
        "  # 3. Find the index of the highest score and return the corresponding text.\n",
        "  best_passage_index = np.argmax(dot_products)\n",
        "\n",
        "  # 4. return the document contents more relevant to the question\n",
        "  return dataframe.contents.iloc[best_passage_index]"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "4o5jcdkarYvU"
      },
      "source": [
        "Per example, for the question `\"how to make the fan speed stronger on the car cooling system\"` you have the following passage as the closest one:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "tPiIDbivo2pU"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "'Operating the Climate Control System Your Googlecar has a climate control system that allows you to adjust the temperature and airflow in the car. To operate the climate control system, use the buttons and knobs located on the center console. Temperature: The temperature knob controls the temperature inside the car. Turn the knob clockwise to increase the temperature or counterclockwise to decrease the temperature. Airflow: The airflow knob controls the amount of airflow inside the car. Turn the knob clockwise to increase the airflow or counterclockwise to decrease the airflow. Fan speed: The fan speed knob controls the speed of the fan. Turn the knob clockwise to increase the fan speed or counterclockwise to decrease the fan speed. Mode: The mode button allows you to select the desired mode. The available modes are: Auto: The car will automatically adjust the temperature and airflow to maintain a comfortable level. Cool: The car will blow cool air into the car. Heat: The car will blow warm air into the car. Defrost: The car will blow warm air onto the windshield to defrost it.'"
            ]
          },
          "execution_count": 19,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "question = \"\"\"how to make the fan speed stronger on the car cooling system\"\"\"\n",
        "\n",
        "best_passage = find_best_passage(question, docs_df, MODEL_ID)\n",
        "best_passage"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "74iiOsaC3YKA"
      },
      "source": [
        "Now you can do one augmented generation (the last step of the RAG process) using the best passage found by the first step, but still having custom answers for users instead of simply pasting large documents chunks directly:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "jHW1eX6p3mGj"
      },
      "outputs": [
        {
          "data": {
            "text/markdown": [
              "Hello there! I can definitely help you understand how to make the fan speed stronger in your Googlecar.\n",
              "\n",
              "Based on the information provided, to make the fan speed stronger, you'll want to:\n",
              "\n",
              "1.  Look for the **fan speed knob** on the center console of your car.\n",
              "2.  Once you find it, simply **turn this knob clockwise**. Turning it clockwise will increase how fast the fan blows air, making it stronger!\n",
              "\n",
              "I hope this helps you get the airflow just right!"
            ],
            "text/plain": [
              "<IPython.core.display.Markdown object>"
            ]
          },
          "execution_count": 20,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from IPython.display import Markdown\n",
        "\n",
        "final_answer_prompt = f\"\"\"Your Role: You are a friendly AI assistant. Your purpose is to explain information to users who are not experts.\n",
        "\n",
        "Your Task: Use the provided \"Source Text\" below to answer the user's question.\n",
        "\n",
        "Guidelines for your Response:\n",
        "\n",
        "Be Clear and Simple: Explain any complicated ideas in easy-to-understand terms. Avoid jargon.\n",
        "Be Friendly: Write in a warm, conversational, and approachable tone.\n",
        "Be Thorough: Construct a complete and detailed answer in full sentences, using all the relevant information from the source text.\n",
        "Stay on Topic: If the source text does not contain the answer, you must state that the information is not available in the provided material. Do not use outside knowledge.\n",
        "\n",
        "QUESTION: {question}\n",
        "PASSAGE: {best_passage}\n",
        "\"\"\"\n",
        "\n",
        "MODEL_ID = \"gemini-2.5-flash\"\n",
        "\n",
        "final_answer = client.models.generate_content(\n",
        "    model=MODEL_ID,\n",
        "    contents=final_answer_prompt,\n",
        ")\n",
        "\n",
        "Markdown(final_answer.text)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-v40U2QWRNCT"
      },
      "source": [
        "# Learning more\n",
        "\n",
        "Check out these examples in the Cookbook to learn more about what you can do with embeddings:\n",
        "\n",
        "- [Search Reranking](../examples/Search_reranking_using_embeddings.ipynb): Use embeddings from the Gemini API to rerank search results from Wikipedia.\n",
        "- [Anomaly detection with embeddings](../examples/anomaly_detection.ipynb): Use embeddings from the Gemini API to detect potential outliers in your dataset.\n",
        "- [Train a text classifier](../examples/Classify_text_with_embeddings.ipynb): Use embeddings from the Gemini API to train a model that can classify different types of newsgroup posts based on the topic.\n",
        "\n",
        "Embeddings have many applications in Vector Databases, too. Check out these examples:\n",
        "- With [Chroma DB](../examples/chromadb)\n",
        "- With [LangChain](../examples/langchain)\n",
        "- With [LlamaIndex](../examples/llamaindex)\n",
        "- With [Qdrant](../examples/qdrant)\n",
        "- With [Weaviate](../examples/weaviate)\n",
        "\n",
        "You can learn more about embeddings in general on ai.google.dev in the embeddings guide\n"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "collapsed_sections": [
        "DJriBaWmkL6Z"
      ],
      "name": "Embeddings.ipynb",
      "toc_visible": true
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
